为了账号安全,请及时绑定邮箱和手机立即绑定

关于正则表达式的问题

/ 猿问

关于正则表达式的问题

ITMISS 2018-11-14 14:08:50

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

 

希望各位兄弟帮忙解答下


查看完整描述

2 回答

?
浮云间

第一个问题:

\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

这个教程 


查看完整回答
反对 回复 2018-11-18
?
慕码人2483693
查看完整回答
反对 回复 2018-11-18

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信