Regex - получить последние n символов из строки, если длина превышает максимально допустимую длину - PullRequest
0 голосов
/ 09 января 2020

У меня есть поле Примечания и позволяет только 240 символов Я хочу, чтобы регулярное выражение извлекало последние 240 символов, если пользователь превышает это ограничение. Итак, если он вставит 250 символов, я хочу, чтобы значение было последними 240 символами. Возможно ли это, или мне нужно использовать строковые функции для получения последних 240 символов?

Теперь регулярное выражение выглядит так:

/^(.{1,240})$/

Ответы [ 2 ]

1 голос
/ 09 января 2020

Вы можете удалить начало привязки строки (^) и попробовать это

let str = `I have a field Notes and allowes only 240 characters. I want a regex to retrieve the last 240 characters if the user exceeds that limit. So, if he inserts 250 chars, I want the value to be the last 240 chars. Is this possible or I need to use string functions to retrieve last 240 characters?

Now the regex is this: /^(.{1,240})$/`


let last240 = (str) => str.match(/[\s\S]{1,240}$/g)

console.log(last240(str))

PS: - Я изменил шаблон регулярного выражения на [\s\S], чтобы соответствовать новым строкам. если ваше требование не нужно, вам просто нужно использовать .{1,240}$

0 голосов
/ 10 января 2020

Как насчет того, чтобы вообще не использовать регулярные выражения?

String lastN( String v, int n ){
  n < v.size() ? v.reverse().take( n ).reverse() : v
}

assert 'ef' == lastN( 'abcdef', 2 )
assert 'cdef' == lastN( 'abcdef', 4 )
assert 'abcdef' == lastN( 'abcdef', 42 )
...