我看菜鸟教程的一个邮箱匹配,
里面有了点为什么还要写%+-三个,点不是匹配非换行的所有字符吗
对于字符串22839%+-3@qq.com
[\w.%+-]+@[\w.-]+.[a-zA-Z]{2,6}\b
可以匹配出, 下面则只会匹配到3@qq.com
[\w.]+@[\w.-]+.[a-zA-Z]{2,6}\b
因为存在\b
, 会限制前后字符不完全是\w
( 数字,字母和下划线 )
关于\b
是如何匹配的, 看下面例子
尝试对字符1111%+-sdd
如下正则匹配
[a-zA-Z]\b
// 1111%+-sdd 只匹配到字符d
[a-zA-Z\w]\b
// 1111%+-sdd 匹配到了第三个数字字符1 和 字母d
[a-zA-Z\w%+-]\b
// 1111%+-sdd 在前面基础上匹配到了- ( 注意没匹配到% )
[a-zA-Z\w%+-]+\b
// 1111%+-sdd 现在全部匹配到了
2 回答1.3k 阅读✓ 已解决
1 回答495 阅读
1 回答465 阅读
[]
中 除了^-]\
外的字符都不需要转义(其中^
不放在开头不需要转义,-
放在开头结尾不需要转义,或者放在不起原本作用的位置不需要转义比如[a-z-.]
中的第二个-
)所以
.
放在[]
中,就是匹配一个.
符号注意不同语言中对正则表达式的支持程度是不一样的
参考:https://www.regular-expressio...