仅名字的正则表达式英语
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 不匹配。以上是关于仅名字的正则表达式英语的主要内容,如果未能解决你的问题,请参考以下文章