一个很难理解的正则表达式

蒙毅 发布于 2016/09/26 15:05
阅读 472
收藏 1
PHP

"/^([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)$/i"

他匹配的应该是一个邮箱! 可是其中的"\\"表示啥呢? 

如果是转义: 成了"\-"和"\. " !

"\." 表示匹配一个无意义的点;

那么"\-"表示匹配啥呢 ?

加载中
0
卖豆浆不卖油条
卖豆浆不卖油条

\\第一个斜杠表示php里的转义,第二个斜杠表示正则里的转义。

\-表示正则里面的转义,-在正则里表示从“A到C”中的“到”,有些情况下会被误解析,所以加个转义到这表示横杠字符的本义。

\.表示匹配一个.本身这个字符,前面的\表示正则里的转义。

蒙毅
蒙毅
十分感谢!
卖豆浆不卖油条
卖豆浆不卖油条
回复 @阳光少年 : 不多余,并且是必须的。如果去掉,就只剩一个斜杠,php解析器会把这个斜杠认为php里的转义,送入正则解析器之前会把这个斜杠去掉,然后……正则里面的转义就没了,然后后面那个符号就会被正则解析器认作正则符号,而不是符号本身代表的字符~~~
蒙毅
蒙毅
嗯,谢谢您的回答. 这里面加一个php中的转义,会不会感觉很多余呀 ?
554330833a
554330833a
都是转义的意思
0
李国师

貌似这个正则 表达式有点问题,取决于你最后匹配的是什么。给你个正则表达分析工具

https://regexper.com/


0
Tuesday
Tuesday

.....

一般是根据需求写正则, 不是根据正则写需求呀..

去理解正则, 也真是够闲了. 

0
szwx855
szwx855

EMAIL验证是这个表达试

^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

0
宏哥
宏哥
const pattern =  "#\{(?:(?<name>\w+):(?<paras>(?:\w+='[\w|\/|\s]+',?)*))(?:/\}|\}(?<snippet>(?:[^{]*|(?!\{\w+:\})++|(?R))*+)\{end\})#mu";



-1
太黑_thj
太黑_thj
很明显  这个表达式有问题,以^开头,但是前面竟然还有/;结尾也是以$结束,就代表整个正则就结束了,后面还跟着/i这是想干啥子
返回顶部
顶部