是否有正则表达式检查字符串是否只包含大写字母、小写字母、数字和下划线?
当前回答
嗯…问题:它是否至少需要一个字符?它可以是空字符串吗?
^[A-Za-z0-9_]+$
将至少做一个大写或小写字母数字或下划线。如果它的长度可以为零,那么只需用+替换*:
^[A-Za-z0-9_]*$
如果需要包含变音符字符(例如cedilla - ç),那么您将需要使用单词character,其功能与上述相同,但包括变音符字符:
^\w+$
Or
^\w*$
其他回答
^\w*$将适用于以下组合:
1
123
1av
pRo
av1
要检查整个字符串并且不允许空字符串,请尝试
^[A-Za-z0-9_]+$
使用lookhead来做“至少一件”事情。相信我,这要简单得多。
下面是一个需要1-10个字符的例子,至少包含一个数字和一个字母:
^(?=.*\d)(?=.*[A-Za-z])[A-Za-z0-9]{1,10}$
注意:我本可以使用\w,但随后开始考虑ECMA/Unicode,增加了\w“字字符”的字符覆盖范围。
在计算机科学中,字母数字值通常意味着第一个字符不是数字,而是字母或下划线。后面的字符可以是0-9、A-Z、A-Z或下划线。
你可以这样做:
在PHP下测试:
$regex = '/^[A-Za-z_][A-Za-z\d_]*$/'
或者采取
^[A-Za-z_][A-Za-z\d_]*$
并将其放在您的开发语言中。
要匹配只包含这些字符(或空字符串)的字符串,请尝试
"^[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指出这一点)。因此,如果您真的打算只匹配这些字符,那么使用显式(较长的)形式可能是最好的。
推荐文章
- 如何从JavaScript中使用正则表达式的字符串中剥离所有标点符号?
- 正则表达式中的单词边界是什么?
- 如何将一个标题转换为jQuery的URL段塞?
- Javascript和regex:分割字符串并保留分隔符
- (grep)正则表达式匹配非ascii字符?
- 如何在保持原始字符串的同时对字符串执行Perl替换?
- 创建正则表达式匹配数组
- *的区别是什么?和。*正则表达式?
- 如何将“camelCase”转换为“Camel Case”?
- 在Java中使用正则表达式提取值
- Java中的正则表达式命名组
- 使用正则表达式搜索和替换Visual Studio代码
- 使用split("|")按管道符号拆分Java字符串
- 替换字符串中第一次出现的模式
- “\d”在正则表达式中是数字吗?