仅名字的正则表达式英语

Posted

技术标签:

【中文标题】仅名字的正则表达式英语【英文标题】:Regex for First name only English 【发布时间】:2018-11-07 16:08:29 【问题描述】:

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

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

以上我使用/^\S[a-zA-Z\s]1,8/

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

非常感谢任何建议。

谢谢

【问题讨论】:

哪种编程语言? 那么像 "x" 后跟 7 个空格的字符串也可以接受吗?那么除了空格之外的其他空格呢? 【参考方案1】:

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

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

DEMO

说明:

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

免责声明:

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

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

^\pL(?:\pL| | )0,7$

你可以使用这个允许正常和日文空格。

DEMO 2

【讨论】:

【参考方案2】:

\S 匹配任何非空白字符(等于[^\r\n\t\f\v ])。

我不是正则表达式忍者,但这应该可以:^[A-Za-z][A-Za-z ]0,7。见:https://regex101.com/r/xQe81c/4

【讨论】:

\S 也不允许 Unicode 中的很多东西。我想应该相当于\PZ 你不需要指定1 ;-) @Allan 谢谢。已更新。 无论如何不错的答案 +1 ;-) 为什么不以 $ 结尾?【参考方案3】:

这应该可以工作:^[a-zA-z][a-zA-Z\s]1,7$

【讨论】:

为什么选择 A-z?那是错字吗?顺便说一句,这与最小值 1 不匹配。

以上是关于仅名字的正则表达式英语的主要内容,如果未能解决你的问题,请参考以下文章

regex格式的名称

正则表达式匹配字母字符[重复]

中间首字母之前超过 1 个名字的正则表达式

正则表达式(RegExp)

正则表达式入门

关于姓名的正则表达怎么写?