позитивный взгляд - PullRequest
       8

позитивный взгляд

1 голос
/ 01 июля 2019

Используйте lookaheads для сопоставления строки длиной более 5 символов и двух последовательных цифр.

Я знаю, что решение должно быть

/(?=\w{6,})(?=\D*\d{2})/

Но почему вторым элементом является

(?=\D*\d{2})

Вместо

(?=\d{2})

Пожалуйста, помогите мне понять это.

Ответы [ 2 ]

1 голос
/ 01 июля 2019

На самом деле, /(?=\w{6,})(?=\D*\d{2})/ не гарантирует совпадения в строке с двумя последовательными цифрами.

Проверьте это демо:

var reg = /(?=\w{6,})(?=\D*\d{2})/;
console.log(reg.test("Matches are found 12."))
console.log(reg.test("Matches are not found 1 here 12."))

Это происходит потому, что \D* соответствует только любым нецифровым символам, и как только \w{6,} соответствует, (?=\D*\d{2}) хочет найти две цифры после любых 0+ цифр, но это не тот случай в строке.

Таким образом, (?=\w{6,})(?=\D*\d{2}) соответствует местоположению в строке, за которым сразу следует 6 или более символов слова и любые 0+ нецифровых символа, за которыми следуют 2 цифры .

Правильное регулярное выражение для проверки, если строка содержит 6 или более символов слова и две последовательные цифры в любом месте строки:

var reg = /^(?=.*\w{6,})(?=.*\d{2})/;

Или для поддержки многострочных строк:

var reg = /^(?=[^]*\w{6,})(?=[^]*\d{2})/;

, где [^] соответствует любому символу. Также [^] можно заменить на [\s\S] / [\d\D] или [\w\W].

и для сопоставления строки длиной более 5 символов и двух последовательных цифр , вы можете использовать

var reg = /^(?=.*\d{2}).{5,}$/
var reg = /^(?=[\s\S]*\d{2})[\s\S]{5,}$/

где

  • ^ - начало строки
  • (?=[\s\S]*\d{2}) - в любом месте после 0+ символов должно быть две цифры справа от текущего местоположения
  • [\s\S]{5,} - пять или более символов
  • $ - конец строки.
1 голос
/ 01 июля 2019

Взгляд должен разрешить 2 цифры в любом месте ввода. Если вы используете только (?=\d{2}), тогда 2 цифры должны быть в начале.

Вы также можете использовать (?=.*\d{2}). Дело в том, что \d{2} должно предшествовать что-то, что может соответствовать остальной части ввода перед цифрами.

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