Значение Dynami c для максимальной длины в регулярном выражении - PullRequest
1 голос
/ 23 января 2020

мне нужно проверить разницу значений длины ввода.

Значение входа может иметь максимальную длину 6/15/25 символов. Теперь я спрашивал себя, если это хорошая практика, использовать только одно динамическое регулярное выражение c для проверки максимальной длины различий вместо копирования и вставки того же регулярного выражения.

Во время моего исследования я обнаружил, что мне нужно использовать const regex = new RegExp()

, проблема в том, что я пытался

const lengthValidation = () => {
  const maxLength = 4;
  const inputValue = 'ciao';
  const regex = new RegExp(`/^.{6,${maxLength}}$/`);
  const isValid = regex.test(inputValue);
  return console.log('regexTest', isValid);
};

lengthValidation();

но это недействительно.

где моя ошибка?

Ответы [ 2 ]

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

Как сказано в комментариях, вы можете просто использовать оператор + как в

const lengthValidation = () => {
  const maxLength = 4;
  const inputValue = 'ciao';

  let expression = '^.{' + maxLength + ',6}$';
  const regex = new RegExp(expression);

  const isValid = regex.test(inputValue);
  return console.log('regexTest', isValid);
};
lengthValidation();

Имейте в виду, что, например, .{6,4} приведет к ошибке, поскольку двигатель требует, чтобы квантификаторы были в правильном порядке. Вы можете встроить проверку до того, как выражение не будет выполнено.
Кроме того, для простой проверки длины регулярное выражение может быть немного излишним.

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

Вы должны удалить косую черту из строки регулярного выражения. Косые черты необходимы только для создания регулярных выражений, когда вы используете нотацию var regex = /expr/;.

Кроме того, вам необходимо использовать нижнюю границу, например, 1 символ, а не 6:

const lengthValidation = () => {
  const maxLength = 4;
  const inputValue = 'ciao';
  const regex = new RegExp(`^.{1,${maxLength}}$`);
  const isValid = regex.test(inputValue);
  console.log(regex);
  console.log('regexTest', isValid);
};

lengthValidation();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...