我需要匹配带有 * identifier * 的字符串。
任何单词都将被视为 * 标识符 *,如果
给定的输入字符串将不包含任何前导空格、尾随空格或空白字符。
我尝试使用以下正则表达式1.第一个月
[ \t\n][a-zA-Z]\w*[ \t\n]
^\D[a-zA-Z]\w*$
nnsrf1az1#
注意,在^\D[a-zA-Z]\w*$正则表达式中,\D可以匹配非字母数字字符,因为\D匹配任何非数字字符,\w还匹配下划线,下划线不是字母数字字符。我建议
\D
\w
^(?![0-9])[A-Za-z0-9]*$
它符合
^
(?![0-9])
[A-Za-z0-9]*
$
请参见regex demo。
e5njpo682#
\D匹配任何非数字字符,不仅包括字母,还包括标点符号、空白字符等,并且您肯定不需要在开头使用它们。您可以使用^[A-Za-z][A-Za-z0-9]*$,它可以描述为
^[A-Za-z][A-Za-z0-9]*$
[A-Za-z]
Demo
eit6fx6z3#
^[^0-9][A-Za-z0-9]*$分解并解释:
^[^0-9][A-Za-z0-9]*$
^[^0-9]
0-9]
[^
作为already suggested by Arvind Kumar Avinash:如果(根据这两个规则)第一个字符不能是数字或数值,而只能是字母,那么我们也可以将上述正则表达式的第一部分从"非数值"替换为"仅字母"。[A-Za-z][A-Za-z0-9]*解释:
[A-Za-z][A-Za-z0-9]*
| 输入|结果|原因|| - ------| - ------| - ------|| aB123|匹配标识符||| 阿布123|匹配标识符||| XXXX12YZ公司|匹配标识符||| a2b3|匹配标识符||| 项目a|匹配标识符||| Z型|匹配标识符||| 无|无匹配|以数字开头|| 1Ab|无匹配|以数字开头|| 12abc|无匹配|以数字开头|| abc_123|无匹配|包含下划线,而不是字母数字|| r2-d2|无匹配|包含连字符,而不是字母数字|
3条答案
按热度按时间nnsrf1az1#
注意,在
^\D[a-zA-Z]\w*$
正则表达式中,\D
可以匹配非字母数字字符,因为\D
匹配任何非数字字符,\w
还匹配下划线,下划线不是字母数字字符。我建议
它符合
^
-字符串开始(?![0-9])
-当前位置右侧不允许有任何数字[A-Za-z0-9]*
-零个或多个ASCII字母/数字$
-字符串结束。请参见regex demo。
e5njpo682#
\D
匹配任何非数字字符,不仅包括字母,还包括标点符号、空白字符等,并且您肯定不需要在开头使用它们。您可以使用
^[A-Za-z][A-Za-z0-9]*$
,它可以描述为^
:字符串的开头[A-Za-z]
:字母表[A-Za-z0-9]*
:字母数字字符,零次或多次$
:字符串结束Demo
eit6fx6z3#
^[^0-9][A-Za-z0-9]*$
分解并解释:^[^0-9]
:单词以数字0-9]
开始,而不是以数字[^
开始(更准确地说,第一个字符不是数字,但第二个字符可以是数字!)。[A-Za-z0-9]*
:在$
结束之前,Word不包含除字母数字字符以外的任何字符(连字符或下划线也不包含)。参见demo on regex101。
积极备选方案
作为already suggested by Arvind Kumar Avinash:如果(根据这两个规则)第一个字符不能是数字或数值,而只能是字母,那么我们也可以将上述正则表达式的第一部分从"非数值"替换为"仅字母"。
[A-Za-z][A-Za-z0-9]*
解释:[A-Za-z]
:第一个字符必须是字母[A-Za-z0-9]*
:可选的第二个字符和后续字符可以是任何字母数字效果相同,参见demo on regex101。
测试
| 输入|结果|原因|
| - ------| - ------| - ------|
| aB123|匹配标识符||
| 阿布123|匹配标识符||
| XXXX12YZ公司|匹配标识符||
| a2b3|匹配标识符||
| 项目a|匹配标识符||
| Z型|匹配标识符||
| 无|无匹配|以数字开头|
| 1Ab|无匹配|以数字开头|
| 12abc|无匹配|以数字开头|
| abc_123|无匹配|包含下划线,而不是字母数字|
| r2-d2|无匹配|包含连字符,而不是字母数字|