Javascript регулярное выражение возвращает истину, если пользовательский шаблон соответствует 100% - PullRequest
0 голосов
/ 14 марта 2019

В ванильном Javascript я хочу проверить строку.

const myRegex = /^\d+|#\d+/g;
console.log(`${myRegex.test("3#123#432#555")}`); // pattern is ok -> true
console.log(`${myRegex.test("3#123#432##555")}`); // two ## -> patter wrog -> but result is true (would like this to be false)
console.log(`${myRegex.test("3#123#432#55a5")}`); // a character in the string -> pattern wrong -> but result is true (should also be false)

Я играл в https://regex101.com/r/tI1sOa/1/ Я получаю идеальное совпадение, используя это регулярное выражение, но хочу, чтобы оно возвращало false при изменении шаблона.

Определение шаблона должно быть: число # число # число # число # номер (поэтому сначала у нас есть номер, за которым следует # номер, столько раз, сколько я хочу)

Если шаблон является номером ### или #number или numberLetter # number или любой другой комбинацией, которая не соответствует шаблону, для теста должно возвращаться значение false.

Как я могу проверить это с помощью регулярных выражений? Почему тот, который я придумал, не работает, как я ожидал?

Спасибо!

1 Ответ

3 голосов
/ 14 марта 2019

^\d+|#\d+ означает

  • соответствует одной или нескольким цифрам в начале строки
  • или соответствует #, за которым следует один или несколькоцифры в любом месте в строке.

Другими словами, ^ является частью первой альтернативы, она не относится ко второй.

Шаблон, который удовлетворяет вашим требованиям, будет выглядеть следующим образом:

^\d+(#\d+)+$
  • соответствует одной или нескольким цифрам в начале строки, за которой следует одна или несколько последовательностей, состоящих из #, за которыми следует одна или несколькоцифры до конца строки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...