用一个或多个单词验证名称的Python正则表达式?

用一个或多个单词验证名称的Python正则表达式?,python,regex,Python,Regex,我需要python中的正则表达式来检查名称是否有效。该名称应该是一个单词或几个单词加上空格。它还应允许使用西班牙语中的一些特殊字符,如áíóúñ,并且(')和(-)一些有效名称应为: “罗伯托·德拉维加·努涅斯” “拉蒙·佩雷斯” “玛丽亚·克里斯蒂娜” “欧内斯特” “奥里奥尔丹” “格里芬·乔伊纳” 当然,它不应该接受数字或其他字符,如&^%#$@~ 我应该使用什么正则表达式?试试这个:^[\-'a-zA-Z]+$。这很简单,您应该仔细阅读re模块 以下是驱动程序代码: 重新导入 def c

我需要python中的正则表达式来检查名称是否有效。该名称应该是一个单词或几个单词加上空格。它还应允许使用西班牙语中的一些特殊字符,如áíóúñ,并且(')和(-)一些有效名称应为: “罗伯托·德拉维加·努涅斯” “拉蒙·佩雷斯” “玛丽亚·克里斯蒂娜” “欧内斯特” “奥里奥尔丹” “格里芬·乔伊纳” 当然,它不应该接受数字或其他字符,如&^%#$@~
我应该使用什么正则表达式?

试试这个:
^[\-'a-zA-Z]+$
。这很简单,您应该仔细阅读
re
模块

以下是驱动程序代码:

重新导入
def check_名称(名称:str):
return re.match(r“^[\-'a-zA-Z]+$”,name)不是None
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
断言检查名称('Griffin-Joyner')==True
断言检查名称(“O'Riordan”)==True
断言检查名称(“Ernest”)==True
断言检查名称(“Roberto de la Vega”)==True
断言检查名称(“1织女星号”)==False
断言检查名称(“Foo@bar“”==假

这将通过您提到的所有五项解决您的问题

re.match(r'[a-zA-Z\'\-\s]+$', name)

相关:模式
^[-'áèíóúña-zA-Z]+$
不匹配
Rober434t de3 dg5 
。到目前为止,您到底尝试了什么?我正在使用odoo中的正则表达式检查名称是否包含无效字符。如果键入名称“Rober434t de3 dg5#”,则此代码应发出警告。但它认为它是有效的,我发现了解决方案“^[\-'a-zA-Záèíóúñ]+$”。但它失败了,因为我的奥多代码中有一个bug,它还应该允许一些来自西班牙语的特殊字符,比如说íóúñ。我已经尝试过使用“^[-'áèèóúña-zA-Z]+$”,但它允许使用诸如“Rober434t de3 dg5#”之类的名称@tico1993,我无法复制它。您的正则表达式适用于我在Linux上使用Python 3,并且
“Rober434t de3 dg5”
返回
False