问题描述
1.stringregex=@"^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$";!Regex.IsMatch("laszlo-@hotmail.com",regex)2.varr=newRegex(@"^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$");!r.Match("laszlo-@hotmail.com").Success请问各位大神,第一种和第二种的结果一样吗?这两种方法有什么区别呢?
解决方案
本帖最后由 SallyAngela 于 2015-06-09 14:43:29 编辑
解决方案二:
一样不一样自己试验一下不就得了怕爆炸吗
解决方案三:
IsMatch只返回bool值,代表匹配成功与否Match返回匹配到的第一个值,如果匹配成功,则可以通过m.Value之类的获取匹配到的字符串或者Group字符串,如果你仅仅是要判断匹配成功与否,那简单点还是IsMatch就可以了
解决方案四:
试过了,其他邮箱地址用这两种方法都可以通过匹配但是laszlo-@hotmail.com这个地址就不行,只有第二种方法通过匹配
解决方案五:
按理说laszlo-@hotmail.com这个地址应该是都可以匹配成功的可是在C#中尝试验证,只有r.Match("laszlo-@hotmail.com").Success是通过Regex.IsMatch("laszlo-@hotmail.com",regex)不通过
解决方案六:
那你就问他俩为什么不一样就行了,不要出个自己知道答案的题考别人
解决方案七:
@"^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$"@"^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$"这两个正则表达式根本都不一样,凭啥要都能匹配成功?
解决方案八:
如果你仅仅是测试这俩函数到底有啥区别你应该把正则表达式放进string类型的变量里传递进去确保传递的是同样的表达式表达式都不一样,你是在测啥呢
解决方案九:
看错了,对不起各位了,两个正则不一样我只是想问下这种方法为什么匹配不成功呢?@之前是允许有-符号的stringregex=@"^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$";Regex.IsMatch("laszlo-@hotmail.com",regex)这是验证邮箱地址
解决方案十:
@"^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$"@"^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$"帮忙解释下这两种正则表达式是不是都可以验证邮箱呢?
解决方案十一:
想知道俩正则表达式是否都能匹配那么就用其中一个函数去分别执行2个表达式看结果呗.是非问题,其实很容易能知道.至于为什么,那就需要去学习正则表达式里每一项的含义
解决方案十二:
"laszlo-@hotmail.com"不符合"^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$"的规则规则w+([-+.]w+)*中-只能出现在字母数字的中间,而laszlo-中的-出现在最后[-+.]w+改为[-+.w]+就可以了当然含义也就大变了([-+.]w+)*的实际含义是:如果有-+.三个字符之一出现,那么后面就至少有一个字母数字或下划线