正则表达式仅限英文名字

时间:2018-05-29 05:35:54

标签: regex

我需要为名字定义一个正则表达式,要求如下。

  • 不允许使用字母数字或特殊字符
  • 不应以空格开头
  • 第一个字符后允许的空格
  • 最小长度为1且最大为8

对于上述情况,我正在使用/^\S[a-zA-Z\s]{1,8}/

不知何故,它允许在第一个字符中使用特殊字符。

任何建议都非常感谢。

由于

3 个答案:

答案 0 :(得分:4)

您可以使用以下正则表达式:

^[a-zA-Z][a-zA-Z ]{0,7}$

DEMO

说明:

  • ^行锚的开头
  • [a-zA-Z]第一个字符只是一个字母
  • [a-zA-Z ]{0,7}字符串的其余部分可以重复大写或小写字母1至7次,以实现长度约束。
  • $锚点用于EOL约束

<强>声明:

此正则表达式适用于英文名称,但会拒绝所有具有拉丁文/日文/ ...字符的名称。

对于接受更多国际名称的更一般的正则表达式

^\p{L}(?:\p{L}| | ){0,7}$

你可以使用这个允许普通和日语空间。

DEMO 2

答案 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}$