You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript姓名字段正则表达式验证:自定义规则下正则正确性确认

你的姓名验证正则表达式分析与修正

嘿,我来帮你仔细检查下这个正则表达式,看看它是否符合你的验证规则~

原正则的问题

你写的正则:

const re = /^[a-z][a-z\s]{3,14}[a-z]$/i;

逻辑方向是对的,但存在一个长度计算错误:
首尾各占1个字符,中间的[a-z\s]{3,14}允许3-14个字符,总长度范围就变成了 1+3+1=5 到 1+14+1=16,这超出了你要求的「最大15字符」的限制。

修正后的正则

调整中间部分的长度范围,把{3,14}改成{3,13},这样总长度就严格控制在5-15之间了:

const re = /^[a-z](?:[a-z\s]{3,13})[a-z]$/i;

这里用(?:...)非捕获组只是为了逻辑上的分组,不影响匹配结果,也可以直接简化写成:

const re = /^[a-z][a-z\s]{3,13}[a-z]$/i;

正则规则匹配验证

我们对应你的要求逐条核对:

  • ✅ 姓名长度5-15字符:首尾2个字符 + 中间3-13个字符,总长度刚好落在5-15区间内
  • ✅ 允许大小写字母:i修饰符会忽略大小写,[a-z]能匹配A-Z和a-z所有字母
  • ✅ 必须以字母开头和结尾:^[a-z]和[a-z]$分别限制首尾为字母,排除了空格或其他字符开头/结尾的情况
  • ✅ 允许空格但禁止数字:中间的[a-z\s]只包含字母和空格,完全不匹配数字类字符

测试示例

  • 有效匹配:"Alice"(5字符)、"John Doe"(8字符)、"Mary Ann Lee"(12字符)
  • 无效匹配:"Jo"(长度不足)、"John1Doe"(含数字)、" John Doe"(开头是空格)、"Johnathan Michael"(长度16,超上限)

内容的提问来源于stack exchange,提问作者Maged Saeed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:02:38