Regex 正则表达式将子字符串与错误的字符串匹配

Regex 正则表达式将子字符串与错误的字符串匹配,regex,Regex,我正在尝试编写一个正则表达式,它匹配大写和小写字母,以大写字母开头,可以选择使用撇号,并且可以接受重音字符 [A-Z]+\'?[A-zA-Z\u00C0-\u017F]* 必须匹配的字符串示例: 乔恩·罗斯 詹姆斯·史密斯 约翰·韦恩 杰伊·沃拉 问题是它匹配了错误字符串中的子字符串,如 约翰·韦恩 它只匹配约翰和韦恩,但我希望整个字符串不匹配。我怎么了? 谢谢大家! 使用$and^匹配字符串的开头和结尾: ^[A-Z]+\'?[a-zA-Z\u00C0-\u017F]*$ 这意味着它将只匹配

我正在尝试编写一个正则表达式,它匹配大写和小写字母,以大写字母开头,可以选择使用撇号,并且可以接受重音字符

[A-Z]+\'?[A-zA-Z\u00C0-\u017F]*

必须匹配的字符串示例: 乔恩·罗斯 詹姆斯·史密斯 约翰·韦恩 杰伊·沃拉

问题是它匹配了错误字符串中的子字符串,如 约翰·韦恩 它只匹配约翰和韦恩,但我希望整个字符串不匹配。我怎么了? 谢谢大家!

使用$and^匹配字符串的开头和结尾:

^[A-Z]+\'?[a-zA-Z\u00C0-\u017F]*$

这意味着它将只匹配整个字符串。

好的,谢谢,它似乎起作用了。如果我想添加一个空间,只有一个空间,我如何修改它^[A-Z]+\'?[\sa-zA-Z\u00C0-\u017F]*$我试过这样做,但它匹配整行,而不仅仅是一个空格匹配一个空格,您不能将\s放在字符集括号内,因为当您这样做时,末尾的*将应用于它。您需要执行类似于^[A-Z]+\'?[A-zA-Z\u00C0-\u017F]*?:\s[A-zA-Z\u00C0-\u017F]*$的操作。你也许可以使它更优雅。