Swift4中的正则表达式以验证全名

问题描述

我正在寻找要在Swift中使用的正则表达式以验证全名。我正在寻找一个正则表达式,其最小为2个字符,最大为100个字符-接受重音符号,破折号(-)和撇号('),并且不包含其他特殊字符-大写和小写字母且没有数字。 -它不能以空格开头,并且名称之间不能有超过1个空格。

我使用的是"(?mi)^[A-Za-zÀ-ú](?!(?:.*\.\/\ ){2})(?!(?:.* ){10})(?!.*\.[a-z])[A-Za-zÀ-ú. '-]{5,99}[A-Za-zÀ-ú]$",但是接受多个空格和一些我不应该使用的名称

链接https://regex101.com/r/493eLF/12

在此先感谢您的帮助。

解决方法

您可以使用以单个空格开头的重复组,然后重复1+次以上字符类中列出的字符。

要验证字符串的长度,可以在字符串的开头使用正向超前。

如果不允许使用尾随空格,则可以在 *之前的末尾省略$

如果还允许使用单个大写字符,则可以将第一个[A-Za-zÀ-ú.'-]+的量词更改为*

^(?=.{2,100}$)[A-Za-zÀ-ú][A-Za-zÀ-ú.'-]+(?: [A-Za-zÀ-ú.'-]+)* *$

Regex demo

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...