如果我使用([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}$](https://i.stack.imgur.com/NNy75.png)
这是语法图([1-9]{1,2},){4}[1-9]{1,2}
![([1-9]{1,2},){4}[1-9]{1,2}](https://i.stack.imgur.com/PKUKI.png)
您可以看到 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}$仅当整个字符串匹配时才匹配。即:上面的例子不匹配。
^匹配字符串的开头,$结尾。