【发布时间】:2014-08-09 12:58:14
【问题描述】:
从这样的字符串中提取全名的正则表达式是什么?
string = "Jim jim@example.com John Doe john@doe.com Dr. Jane Doe jane3@doe.co Jeff H. P. O'Doe jeff.h@doe_doe.fm"
我需要的结果是:
Jim, John Doe, Dr. Jane Doe, Jeff H. P. O'Doe
如果电子邮件在括号中,我已经找到了解决方案,但在这种情况下,电子邮件不在括号中。
这是我目前的进步:
/\b(?<!@)([a-zA-Z'.]+\s[a-zA-Z'.]+\s[a-zA-Z'.]+(?!@)\b|[a-zA-Z'.]+\s[a-zA-Z'.]+(?!@)\b)/
这不是很好,因为它只考虑两个或三个字长的名称,并且仍然从电子邮件中捕获 .com 或 .whatever。
【问题讨论】:
-
不要使用
a-zA-Z等,因为它会在第一次遇到像 Al-Fayed 或 Müller 这样的名字时中断。您似乎通过包含'处理了爱尔兰名字,但仅此而已。即使您的用户群以美国为中心,这也不是一个好习惯。虽然很多或在 40 年代和 50 年代移居的人确实改姓以对英语更友好,但现在移居那里的人很少这样做。