2013-08-21 3 views
2

Если я использую ([1-9]{1,2},){4}[1-9]{1,2} в соответствии с вводом.
1,2,3,4,5,6,7,8,9 будет соответствовать как действительный ввод.

Но если добавить ^ в начале и $ в конце. Выражение ^([1-9]{1,2},){4}[1-9]{1,2}$ соответствует 1,2,3,4,5, как я и хотел.

Мой вопрос: В чем разница между ^([1-9]{1,2},){4}[1-9]{1,2}$ и ([1-9]{1,2},){4}[1-9]{1,2}? Знаете, я только добавляю ^ и $.

Не могли бы вы объяснить, почему происходит эта разница?

ответ

12

Это синтаксическая диаграмма для ^([1-9]{1,2},){4}[1-9]{1,2}$

^([1-9]{1,2},){4}[1-9]{1,2}$

Это синтаксическая диаграмма для ([1-9]{1,2},){4}[1-9]{1,2} ([1-9]{1,2},){4}[1-9]{1,2}

Вы можете увидеть разницу между 2 регулярными выражениями первой регулярными выражениями силы в соответствие от Start строки к End строки.

Диаграммы создаются с использованием Regexper.

+1

Можете ли вы указать мне на генератор диаграмм? –

+0

@PeterAlfvin Обновлено. – zsong

+3

Интернет поражает ... –

3

^ означает соответствие начала строки, $ означает соответствие конца строки. Таким образом, это в основном означает, что ваша строка должна точно соответствовать шаблону, сравните:

^foo$ с foo как ваше регулярное выражение.

Пробуйте сопоставить его с food. Первый не будет соответствовать, потому что мы не попадаем в конец строки после части foo.

3

([1-9]{1,2},){4}[1-9]{1,2} будет соответствовать в любом месте строки, I.e .: 2,, 2abcd, 35,54,67,23,04foobar будет соответствовать.

^([1-9]{1,2},){4}[1-9]{1,2}$ будет соответствовать только всей строке. I.e .: Приведенный выше пример не соответствует.

^ соответствует началу строки, $ конец.

Смежные вопросы