是否有正则表达式检查字符串是否只包含大写字母、小写字母、数字和下划线?


当前回答

Use

^([A-Za-z]|[0-9]|_)+$

...如果你想要明确,或者:

^\w+$

...如果您更喜欢简洁(Perl语法)。

其他回答

要检查整个字符串并且不允许空字符串,请尝试

^[A-Za-z0-9_]+$

使用lookhead来做“至少一件”事情。相信我,这要简单得多。

下面是一个需要1-10个字符的例子,至少包含一个数字和一个字母:

^(?=.*\d)(?=.*[A-Za-z])[A-Za-z0-9]{1,10}$

注意:我本可以使用\w,但随后开始考虑ECMA/Unicode,增加了\w“字字符”的字符覆盖范围。

我相信您在匹配中没有使用拉丁字符和Unicode字符。

例如,如果需要使用“ã”或“ü”字符,则使用“\w”将不起作用。

你也可以使用这种方法:

^[A-ZÀ-Ýa-zà-ý0-9_]+$

这在大多数情况下都是可行的。

/^[\d]*[a-z_][a-z\d_]*$/gi

我的意思是,

abcd       True
abcd12     True
ab12cd     True
12abcd     True

1234       False

解释

^……$ -匹配模式的开始和结束 [\d]* -匹配零或多个数字 [a-z_] -匹配字母或下划线 [a-z\d_]* -匹配字母、数字或下划线 /gi -全局匹配字符串,不区分大小写

Use

^([A-Za-z]|[0-9]|_)+$

...如果你想要明确,或者:

^\w+$

...如果您更喜欢简洁(Perl语法)。