2015-05-02 2 views
4

Имея регулярное выражение так: ab*d Почему он возвращает соответствие true для ввода abbbde? Как изменить его, чтобы проверить и последний символ?Regex validate with last character

ответ

8

Позволяет анализировать регулярное выражение:

а - соответствовать «а»

б * - соответствует любое число Б

d - Совпадение «г "

Потому что * соответствует любому числу букв.

$ соответствует концу строки, так

ab*d$ 

должен соответствовать конец строки (чтобы убедиться, что ничего не следует)

Затем снова \ s будет соответствовать любой пробел, чтобы другой вариант

ab*d\s 
+0

нормально, но если бы я добавил $ до конца, он также проверил lengh? потому что теперь ab * d $ не проверяет abdgdgdgd, я утверждаю, что * означает 0 или более любых символов. – kosnkov

+0

* означает любое число предыдущего символа – user230910

+0

, так как сделать 0 или более символов? – kosnkov

6

Вам необходимо добавить $ в конец рисунка, чтобы убедиться, что он последний символ ab*d$.

A $ в регулярных выражениях называется End of String Anchor. Вы можете прочитать больше о анкеров здесь http://www.regular-expressions.info/anchors.html