php正则表达式反斜杠破折号

时间:2014-07-19 16:16:50

标签: php regex

我是PHP的新手,我正在尝试适应php正则表达式

来自w3schools这个正则表达式

"/([\w\-]+\@[\w\-]+\.[\w\-]+)/"

代表电子邮件正则表达式,但我想知道这个类定义对"[\w\-]"\w的任何单词字符意味着什么,但是"\-"呢?

(编辑)的

4 个答案:

答案 0 :(得分:4)

但是\-呢?

连字符在正则表达式中大多是正常字符。

  • 在角色类之外;它具有没有特殊含义(不需要转义连字符)。
  • 在角色类中,具有特殊含义。

您可以将连字符作为类的第一个或最后一个字符而不进行转义。

  • [-\w][\w-]

在一些正则表达式实现中,您也可以直接放在一个范围之后而不进行转义。

简单地将连字符转义为该类的最后一个字符就好了。

[\w\-]  # any character of: word characters (a-z, A-Z, 0-9, _), 
        # match a literal hyphen `\-'

答案 1 :(得分:3)

[\w\-]表示字母(大写和小写字母)和数字,包括 - (下划线)

您可以查看正则表达式解释here

  

[\w\-]+ 匹配下面列表中的单个字符

     

量词:在一次和无限次之间,尽可能多次,根据需要回馈[贪心]

     

\ w 匹配任何单词字符[a-zA-Z0-9 _]

     

\- 匹配字符 - 字面意思

答案 2 :(得分:1)

所有[\w\-]均值匹配且字符\w与任意匹配 - \-

它与[\w-]

完全相同

答案 3 :(得分:0)

\w匹配任何字符加_,下划线,即大写和小写字母,数字0到9和下划线。
\-与正常破折号相匹配。

因此[\w\-]会在电子邮件别名中允许数字,字母,下划线和短划线
应该注意\.允许@之前的正则表达式不包括.,但{{1}}允许{{1}}电子邮件别名