字母数字和下划线的正则表达式
我想有一个正则表达式来检查一个字符串是否只包含大写和小写字母,数字和下划线。
要匹配仅包含这些字符(或空字符串)的字符串,请尝试
"^[a-zA-Z0-9_]*$"
这适用于.NET正则表达式,可能还有很多其他语言。
打破它:
^ : start of string
[ : beginning of character group
a-z : any lowercase letter
A-Z : any uppercase letter
0-9 : any digit
_ : underscore
] : end of character group
* : zero or more of the given characters
$ : end of string
如果您不想允许空字符串,请使用+而不是*。
编辑正如其他人指出的,一些正则表达式语言有[a-zA-Z0-9_]
的简写形式。 在.NET正则表达式语言中,可以打开ECMAScript行为并使用w
作为简写(产生^w*$
或^w+$
)。 请注意,在其他语言中,默认情况下在.NET中, w
稍宽一些,并且也会匹配其他种类的unicode字符(感谢Jan指出了这一点)。 所以如果你真的打算只匹配那些角色,那么使用明确的(较长的)形式可能是最好的。
这里有很多冗长的内容,我深深反对,所以我的结论性答案是:
/^w+$/
w
相当于[A-Za-z0-9_]
,这几乎就是你想要的。 (除非我们将unicode引入混音中)
使用+
量词可以匹配一个或多个字符。 如果您还想接受空字符串,请改用*
。
你想检查每个字符是否符合你的要求,这就是我们使用的原因:
[A-Za-z0-9_]
你甚至可以使用简写形式:
w
这是相同的(在一些正则表达式中,所以请确保在使用之前检查它)。 然后为了表明整个字符串必须匹配,可以使用:
^
要表明该字符串必须以该字符开头,然后使用
$
指示字符串必须以该字符结尾。 然后使用
w+ or w*
表示“1或更多”或“0或更多”。 综合起来,我们有:
^w*$
链接地址: http://www.djcxy.com/p/13437.html