我写了一个正则表达式来匹配我网站上注册表单的名字/姓氏。要求是:
- 最多 44 个字符
-
或者'
可以接受- 名称中可以有一个空格
- 不需要 Unicode
有什么办法可以让我的表情变短吗?
^[a-zA-Z]{2,12}['-]?[a-zA-Z]{1,10}\s?[a-zA-Z]{2,12}['-]?[a-zA-Z]{1,10}$
名称字段的限制是否太多?
我写了一个正则表达式来匹配我网站上注册表单的名字/姓氏。要求是:
-
或者'
可以接受有什么办法可以让我的表情变短吗?
^[a-zA-Z]{2,12}['-]?[a-zA-Z]{1,10}\s?[a-zA-Z]{2,12}['-]?[a-zA-Z]{1,10}$
名称字段的限制是否太多?
首先使用您的正则表达式,响应最多为 47 个字符:12+1+10+1+12+1+10。
我认为对你来说最好的方法是允许来自字母、逗号、减号或空格的 44 个字符。
您可以强制第一个字符为字母:
^[a-zA-Z][a-zA-Z\-'\s]{0,43}$
以下是您的代码可能遗漏的名称:
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