我正在尝试为名称编写一个 RegEx。姓名可以选择以头衔开头(Dr.、Mrs. 等),或者包含两个或三个姓名,中间名可选择缩写为 (X.)
例如,应匹配以下名称:
以下不应该匹配
这是我所拥有的:
^(Dr\.|Mr\.|Mrs\.)?[A-Z][a-z]+\s([A-Z][a-z]+|[A-Z]\.)\s[A-Z][a-z]+?
我不太确定我哪里出错了。
最佳答案
^((Dr|Mr|Mrs)\. )?[A-Z][a-z]+( [A-Z]([a-z]+|\.))? [A-Z][a-z]+
这是我为修复它所做的:
?
结果为“lazy matching ” - 匹配尽可能少的字符(在本例中为 1) \s
- 更容易阅读,\s 匹配制表符、换行符等。 关于javascript 名称正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15232348/