我尝试验证名称,但我不知道是否适合使用此表达式
[A-ZÄËÏÖÜÁÉÍÓÚÂÊÎÔÛÀÈÌÒÙ]
[a-zäÄëËïÏöÖüÜáéíóúáéíóúÁÉÍÓÚÂÊÎÔÛâêîôûàèìòùÀÈÌÒÙ]
+(\s)*
[a-zäÄëËïÏöÖüÜáéíóúáéíóúÁÉÍÓÚÂÊÎÔÛâêîôûàèìòùÀÈÌÒÙ]+
我要验证的是例如:
- 十字架的玛丽
- 何塞·安东尼奥
在我的正则表达式中,当我到达 (\s)* 部分时,我想再次重复相同的过程而不写第一件事,我不知道你是否理解我的意思。我想做的一个例子是这样的:
[A-ZÄËÏÖÜÁÉÍÓÚÂÊÎÔÛÀÈÌÒÙ]
[a-zäÄëËïÏöÖüÜáéíóúáéíóúÁÉÍÓÚÂÊÎÔÛâêîôûàèìòùÀÈÌÒÙ]
+(\s)*
([a-zäÄëËïÏöÖüÜáéíóúáéíóúÁÉÍÓÚÂÊÎÔÛâêîôûàèìòùÀÈÌÒÙ]
+(\s)*)*
([a-zäÄëËïÏöÖüÜáéíóúáéíóúÁÉÍÓÚÂÊÎÔÛâêîôûàèìòùÀÈÌÒÙ]
+(\s)*)*
我的回答是基于你的问题的更一般的问题:
当您想在片段之间使用一些分隔符重复相同的表达式/块时,通常使用以下内容:
在哪里:
例如,在您的情况下,它可能是这样的(它会有点不同,因为您希望第一个大写)
在哪里:
此外,将所有这些放在行首和行尾之间可能是一个好主意,
^$
以避免在“jUan perez”中找到“Uan perez”选择:
正如您将看到的,虽然前面的方法是最常见的,但它(仅)重复了一次表达式。
还有其他不重复表达式的替代方法,例如我在下面介绍的那个,尽管它的缺点是您无法控制重复的次数(姓名和姓氏的数量)。我也将它留作好奇,或者以防它对您有用。
它将包括:
因此,对于以大写字母开头的名称,它会是这样的(这次,为简单起见,我将使用 SEPARATOR = space 和 Allowed characters =
a-z
)^(?!.* (?: |$))[A-Z][a-z ]+$
如果您不在乎是否连续有两个空格,这会更容易
例子:
^(?!.* $)[A-Z][a-z ]+$
变量的替代方案:
当然,请记住,在绝大多数编程语言中,您可以将正则表达式块存储在一个变量中,然后在正则表达式中使用这些变量,这样您就可以毫不费力地重复相同的块。