我希望用户名是_或包含-在其中的任何字符,但在Perl中这不起作用,为什么呢?
if ("kunjaaN-" =~ /^[a-zA-Z-_]{1,7}$/)
{ print "equal" ; }
Run Code Online (Sandbox Code Playgroud)
Pet*_*ton 10
它不起作用,因为kunjaaN-是8个字符,你只限于1..7
对于用户名,为什么不将限制增加到体面的东西?
此外,如果您想要_包含,则需要在角色类中包含它.
试试这个正则表达式:
^[a-zA-Z_-]{1,16}\z
Run Code Online (Sandbox Code Playgroud)
注意:
在字符内部类中,-字符可以具有特殊含义.例如,[a-z]表示'以'开头a和结尾z' 的字符范围,同时[az-]表示' a或者z或-' 或'.
要使-非特殊,您可以将其放在类的开头或结尾,或者使用反斜杠将其转义.[a\-z]将匹配a或z或-.
逃逸通常是首选,因为如果无意中将额外的字符添加到课程的末尾,它可以避免意外.