Regex Javascript экранирование специальных символов плюс ограничение на количество символов - PullRequest
0 голосов
/ 21 января 2019

Может кто-нибудь помочь мне с этим регулярным выражением?Мне нужно что-то, что позволяет: 0-9 az AZ пробелы запятые дефисы апострофы и эти другие специальные символы: _ @ =. `Плюс одновременно установить ограничение символов в нем.

Я получил это сейчас, новыдает недопустимое исключение регулярного выражения.

var regex = /^\s*([0-9a-zA-Z\s\,\-\(\)\'\_\@\~\&\*\=\.\`]{1,35}+)\s*$/;
        return this.optional(element) || value.match(regex);
       }, "Please enter a valid name"    );

Спасибо за любую помощь!

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Комбинация метапоследовательности чего-либо

Похоже, вы хотите что-нибудь.Если это так, используйте:

/[\S\s]{1,35}/g

Скобки [ ... ] означают, что один символ в нем совпадает.

\s любойпробел.

\S - любой не пробел.

и {1,35} означают от одного до тридцати пяти последовательных совпадений того, что предшествовало ему.

Демо

Позволяет получить первые от 1 до 35 символов, а также каждые от 1 до 35 символов

var str = `1234567~!@#$%^&*e()_+_{}{:>><rthjokyuym.,iul[.<>LOI*&^%$#@!@#$%^&*()_+_{}{:>><KJHBGNJMKL>|}{POIUY~!@#$%^&*(+_)O(IU`;

var rgx = /[\s\S]{1,35}/g;

var res = rgx.exec(str);

console.log(`==== The first 35 characters ===========================`);
console.log(res[0]);
console.log(' ');
console.log(`==== OR for every 1 to 35 characters ===================`);
while (res !== null) {
  console.log(res[0]);
  var res = rgx.exec(str);
}
.as-console-wrapper {
  min-height: 100%;
}

div div div.as-console-row:first-of-type,
div div div.as-console-row:nth-of-type(4) {
  color: tomato
}
0 голосов
/ 21 января 2019

Удалить + после {1,35} и экранировать только специальные символы:

var regex = /^\s*([0-9a-zA-Z\s,\-()'_@~&*=.`]{1,35})\s*$/;

console.log(regex.test(" asdfghjkl "))
console.log(regex.test(" asdf'&@() "))
console.log(regex.test(" asdfghjklasdfghjklasdfghjklasdfghjklasdfghjkl "))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...