Для чего может быть этот алгоритм Regex? - PullRequest
0 голосов
/ 27 марта 2019

Может кто-нибудь сказать мне, что это за алгоритм Regex?

^0[1-10]
{3}-[1-10]
{3}-[1-10]{3}$

Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 27 марта 2019

@ lawrencealan верно относительно буквальных совпадений, но если регулярное выражение было установлено на

^0[1-9]{3}-[1-9]{3}-[1-9]{3}$

, тогда оно будет соответствовать

0XXX-XXX-XXX

, где X может быть только числами 1-9, а не 0. Например, все они будут соответствовать:

0748-283-991
0845-854-768
0478-982-749

Но не:

0840-324-876
0489-006-010
1324-987-345
1 голос
/ 27 марта 2019

мы можем рассматривать это регулярное выражение как одну из трех возможностей:

  • принять его как есть
  • сделать его одной строкой с пробелами
  • makeэто в одну строку, без пробелов

Излишне говорить, что все три дают разные результаты матчей.Я использую regex101.com для объяснения совпадений с регулярными выражениями.

шаблон [1-10] - это (скорее всего) опечатка.вопрос, вероятно, означал «числа от 1 до 10», но вместо этого он говорит «любой из: 1, 0, -»

, если я заменю [1-10] на [0-9], выражение оченьполезнее.Взгляните на это: https://regex101.com/r/khD1LI/3/

теперь это выглядит как выражение для захвата какого-то числового кода


, вы можете уточнить значение, заменив [0-9] на \d, который является сокращенным классом для всех цифр

, а именно: процесс сопоставления: https://regexper.com/#^0\d{3}-\d{3}-\d{3}$

enter image description here

0 голосов
/ 27 марта 2019

Это регулярное выражение выглядит искаженным ... так что, вероятно, ничего в его текущем состоянии ... Если вы все исправите, то:

^0[1-10]{3}-[1-10]{3}-[1-10]{3}$

Будет соответствовать этим строкам:

0XXX-XXX-XXX
0XXX-XXX-XXX
0XXX-XXX-XXX

Где X это либо 1, либо 0

Итак, первые две, но не последняя из этих строк:

0111-101-000
0001-010-101
0333-100-111
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...