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