1

我写了一个正则表达式来匹配我网站上注册表单的名字/姓氏。要求是:

  • 最多 44 个字符
  • -或者'可以接受
  • 名称中可以有一个空格
  • 不需要 Unicode

有什么办法可以让我的表情变短吗?

^[a-zA-Z]{2,12}['-]?[a-zA-Z]{1,10}\s?[a-zA-Z]{2,12}['-]?[a-zA-Z]{1,10}$

名称字段的限制是否太多?

4

2 回答 2

1

首先使用您的正则表达式,响应最多为 47 个字符:12+1+10+1+12+1+10。

我认为对你来说最好的方法是允许来自字母、逗号、减号或空格的 44 个字符。

您可以强制第一个字符为字母:

^[a-zA-Z][a-zA-Z\-'\s]{0,43}$
于 2012-12-16T16:01:08.567 回答
0

以下是您的代码可能遗漏的名称:

Jo Blow                  not passed
Hyoung Kyoung Wu         not passed
Mike O'Neal              not passed
d'Are to Beaware         not passed
O Henry Smith            not passed
Mathais d'Arras          not passed
Martin Luther King Jr    not passed
George De FunkMaster     not passed
Kurtis B-Ball Basketball not passed
Ahmad el Jeffe           not passed
An Ni                    not passed

你可以试试这个可以处理几乎所有名字的

^[^- '](?=(?![A-Z]?[A-Z]))(?=(?![a-z]+[A-Z]))(?=(?!.*[A-Z][A-Z]))(?=(?!.*[- '][- ']))[A-Za-z- ']{2,}$
Jo Blow                      passed
Hyoung Kyoung Wu             passed
Mike O'Neal                  passed
d'Are to Beaware             passed
O Henry Smith                passed
Mathais d'Arras              passed
Martin Luther King Jr        passed
George De FunkMaster         passed
Kurtis B-Ball Basketball     passed
Ahmad el Jeffe               passed
An Ni                        passed
于 2021-02-02T20:31:57.330 回答