首页 新闻 会员 周边

关于正则表达式的问题

1
[已解决问题] 解决于 2012-10-17 09:10

最近接触到这东西,开始有点兴趣了。学习了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.)[]和()有什么区别?有啥作用?

 

希望各位兄弟帮忙解答下

Poiuyt_cyc的主页 Poiuyt_cyc | 初学一级 | 园豆:24
提问于:2012-10-16 11:33
< >
分享
最佳答案
1

第一个问题:

\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

这个教程 

奖励园豆:5
acjialiren | 初学一级 |园豆:191 | 2012-10-17 01:39
其他回答(2)
0
dudu | 园豆:30994 (高人七级) | 2012-10-16 11:40

我今天早上就是看这篇文章。。感觉有些东西还是没提到。。

 

谢谢你的推荐,我再去仔细的看一篇!

支持(0) 反对(0) Poiuyt_cyc | 园豆:24 (初学一级) | 2012-10-16 11:45

@Poiuyt_cyc: 推荐一本书《精通正则表达式》(ISBN: 9787121046841)

支持(0) 反对(0) dudu | 园豆:30994 (高人七级) | 2012-10-16 11:52
0

^ 表示开始,$ 表示结尾

[] 可以表示范围  []里面的^表示否定的意思,

() 可以对匹配的结果分组

世界万物 | 园豆:276 (菜鸟二级) | 2012-10-16 12:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册