^([1-9] {1,2},){4} [1-9] {1,2} $和([1-9] {1,2},){4}之间有什么区别[ 1-9] {1,2}?

时间:2013-08-21 04:25:45

标签: c# regex

如果我使用 ([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} 之间有什么区别?你知道,我只添加 ^ $

你能解释为什么会发生差异吗?

3 个答案:

答案 0 :(得分: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 :(得分: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}$才会匹配。即:上面的例子不匹配。

^匹配字符串的开头,$结束。