最近接触到这东西,开始有点兴趣了。学习了1天后发现点问题。。
1.)^ value $和\b value \b之间有什么区别?
2.)
string str = @"0\d{2,4}-\d{5,8}"; Regex re = new Regex(str); Boolean bo = re.IsMatch(TextBox1.Text); TextBox1.Text = bo.ToString();
我是想判断电话号码是否是0开头后面为数字(长度是2~4),然后-,然后后面为数字(长度是5~8)
问题来了0\d{2,4}-\d{5, 一直到这里的判断都没问题..但长度大于8却不起效..如0111-11111111111还是true..这是为什么..
但是如果在前后加上^$或\b\b后却没问题..
3.)[]和()有什么区别?有啥作用?
希望各位兄弟帮忙解答下
第一个问题:
\b 表示单词的分割的位置,有三种情况:
1.一行字符串的起始位置,并且第一个字符是字母或数字
2.一行字符串的末尾位置,并且最后一个字符是字母或数字
3.这个位置的左右两个字符,有一个不是字母和数字
^ 表示行首位置,$ 表示行尾位置
因此 ,\bvalue\b会匹配到目标串所有符合规则的单词,而^value$会匹配到一行,这一行符合指定的规则
第二个问题
之所以是true 是因为能匹配到成功的电话号码,0111-11111111111 中0111-11111111这是一个正确的号码,所以就是正确的。re.IsMatch理解为是否存在出成功的匹配,事实上,0111-11111是第一个这正确的匹配,匹配到这里就返回true了
第三个问题
[]和()有什么区别?有啥作用? 还是建议多看看教程,那个 《三十分钟》认真看过,看懂的话,就不会有这个问题了。
下面这个教程是我写的,还是个半成品,说了惭愧,放置和一段时间了,我这两天再整理下,现在也能将就的看。
教程 : http://note.youdao.com/share/?id=7629e2d94d6d54e2a2fbbc6ba3c93269&type=note
这个教程
推荐一篇文章:正则表达式30分钟入门教程
我今天早上就是看这篇文章。。感觉有些东西还是没提到。。
谢谢你的推荐,我再去仔细的看一篇!
@Poiuyt_cyc: 推荐一本书《精通正则表达式》(ISBN: 9787121046841)
^ 表示开始,$ 表示结尾
[] 可以表示范围 []里面的^表示否定的意思,
() 可以对匹配的结果分组