我需要为名字定义一个正则表达式,要求如下。
对于上述情况,我正在使用/^\S[a-zA-Z\s]{1,8}/
不知何故,它允许在第一个字符中使用特殊字符。
任何建议都非常感谢。
由于
答案 0 :(得分:4)
您可以使用以下正则表达式:
^[a-zA-Z][a-zA-Z ]{0,7}$
说明:
^
行锚的开头[a-zA-Z]
第一个字符只是一个字母[a-zA-Z ]{0,7}
字符串的其余部分可以重复大写或小写字母1至7次,以实现长度约束。$
锚点用于EOL约束<强>声明:强>
此正则表达式适用于英文名称,但会拒绝所有具有拉丁文/日文/ ...字符的名称。
对于接受更多国际名称的更一般的正则表达式:
^\p{L}(?:\p{L}| | ){0,7}$
你可以使用这个允许普通和日语空间。
答案 1 :(得分:1)
\S
匹配任何非空格字符(等于[^\r\n\t\f\v ]
)。
我不是正则表达式忍者,但这应该有效:^[A-Za-z][A-Za-z ]{0,7}
。请参阅:https://regex101.com/r/xQe81c/4
答案 2 :(得分:1)
这应该有效:^[a-zA-z][a-zA-Z\s]{1,7}$