是否有正则表达式检查字符串是否只包含大写字母、小写字母、数字和下划线?
当前回答
对于那些寻找unicode字母数字匹配的人,你可能想做一些类似的事情:
^[\p{L} \p{Nd}_]+$
进一步的阅读请参阅Unicode正则表达式(Unicode Consortium)和Unicode正则表达式(Regular-Expressions.info)。
其他回答
这对我很有用。你可以试试:
[\\p{Alnum}_]
嗯…问题:它是否至少需要一个字符?它可以是空字符串吗?
^[A-Za-z0-9_]+$
将至少做一个大写或小写字母数字或下划线。如果它的长度可以为零,那么只需用+替换*:
^[A-Za-z0-9_]*$
如果需要包含变音符字符(例如cedilla - ç),那么您将需要使用单词character,其功能与上述相同,但包括变音符字符:
^\w+$
Or
^\w*$
对我来说,有一个问题,我想要区分alpha,数值和alpha数值,所以要确保一个字母数字字符串包含至少一个alpha和至少一个数值,我使用:
^([a-zA-Z_]{1,}\d{1,})+|(\d{1,}[a-zA-Z_]{1,})+$
使用lookhead来做“至少一件”事情。相信我,这要简单得多。
下面是一个需要1-10个字符的例子,至少包含一个数字和一个字母:
^(?=.*\d)(?=.*[A-Za-z])[A-Za-z0-9]{1,10}$
注意:我本可以使用\w,但随后开始考虑ECMA/Unicode,增加了\w“字字符”的字符覆盖范围。
这在大多数情况下都是可行的。
/^[\d]*[a-z_][a-z\d_]*$/gi
我的意思是,
abcd True
abcd12 True
ab12cd True
12abcd True
1234 False
解释
^……$ -匹配模式的开始和结束 [\d]* -匹配零或多个数字 [a-z_] -匹配字母或下划线 [a-z\d_]* -匹配字母、数字或下划线 /gi -全局匹配字符串,不区分大小写