正则表达式的点为什么不匹配%+-三个字符

我看菜鸟教程的一个邮箱匹配,image.png
里面有了点为什么还要写%+-三个,点不是匹配非换行的所有字符吗

阅读 3.2k
2 个回答

[] 中 除了 ^-]\ 外的字符都不需要转义(其中 ^ 不放在开头不需要转义,- 放在开头结尾不需要转义,或者放在不起原本作用的位置不需要转义比如 [a-z-.] 中的第二个 -
所以 . 放在 [] 中,就是匹配一个 . 符号

注意不同语言中对正则表达式的支持程度是不一样的
参考:https://www.regular-expressio...

对于字符串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 现在全部匹配到了
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进