如果我使用 ([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}
之间有什么区别?你知道,我只添加 ^ 和 $ 。
你能解释为什么会发生差异吗?
答案 0 :(得分:12)
这是^([1-9]{1,2},){4}[1-9]{1,2}$
这是([1-9]{1,2},){4}[1-9]{1,2}
的语法图
您可以看到2个正则表达式之间的区别是第一个正则表达式强制匹配从字符串的Start
到字符串的End
。
使用Regexper生成图表。
答案 1 :(得分:3)
^
表示匹配字符串的开头,$
表示匹配字符串的结尾。所以它基本上意味着你的字符串必须与模式完全匹配,比较:
^foo$
以foo
为正则表达式。
尝试将其与food
匹配。第一个不匹配,因为我们没有在foo
部分之后点击字符串的末尾。
答案 2 :(得分:3)
([1-9]{1,2},){4}[1-9]{1,2}
将匹配字符串中的任何位置,即:2,2abcd,35,54,67,23,04foobar将匹配。
^([1-9]{1,2},){4}[1-9]{1,2}$
才会匹配。即:上面的例子不匹配。
^
匹配字符串的开头,$
结束。