Member 14105304 Ответов: 3

'? ' - Регулярное выражение - js


let american = "color";
let rainbowRegex= /colou?r/;
rainbowRegex.test(american); // Returns true -- why?


Что я уже пробовал:

чтобы понять и попробовать другие примеры. но все равно я ничего не понимаю

3 Ответов

Рейтинг:
2

Wastedtalent

U является необязательным в регулярном выражении, как это обозначается ?

Так что и "цвет", и "цвет" будут совпадать.

Введите colou?r в поле regex здесь, чтобы увидеть:

Debuggex: онлайн-тестер визуальных регулярных выражений. JavaScript, Python и PCRE.[^]


Рейтинг:
1

Patrice T

Цитата:
'? ' - Регулярное выражение - js

Совет: читайте документацию.

Вот ссылка на документацию по регулярным выражениям:
perlre - perldoc.perl.org[^]
Вот ссылки на инструменты, помогающие создавать регулярные выражения и отлаживать их:
.Объем тестер регулярное выражение - регулярное выражение шторм[^]
Регулярное Средство Выражения Эспрессо [^]
RegExr: Learn, Build, & Test RegEx[^]
Онлайн-тестер регулярных выражений и отладчик: PHP, PCRE, Python, Golang и JavaScript[^]
Этот пример показывает вам регулярное выражение в виде красивого графика, который действительно полезен для понимания того, что делает регулярное выражение: Debuggex: онлайн-тестер визуальных регулярных выражений. JavaScript, Python и PCRE.[^]
Этот сайт также показывает регулярное выражение в красивом графике, но не может проверить, что соответствует регулярному выражению: Regexper[^]


Рейтинг:
0

OriginalGriff

Потому что"? " само по себе (без "*" или " + " перед ним) говорит "ноль или единица" предыдущего элемента.
Так, "красоч?Р" соответствует слову "цвет" или "цвет", но не "colotr".

Как я и предлагал в прошлый раз, возьмите копию Экспрессо[^] - это бесплатно, и он проверяет и генерирует регулярные выражения.
Это бы вам все объяснило!


Member 14105304

итак,"? " просто отклоняет заднее слово этого, а затем проверяет?

OriginalGriff

Нет, прочтите, что я сказал:

'?' on it's own ... says "zero or one" of the preceding element.


Поскольку предыдущий элемент представляет собой один символ "u", он говорит " ноль или один "u""
Чтобы "не обращать внимания на слово", вы должны сделать его группой:
"(Колау)?r" будет соответствовать "цвету" или "r", потому что "colou" - это группа, и она действует как предыдущий элемент для"?"

Серьезно, скачайте Expresso и попробуйте его - это поможет вам понять!