正则表达式匹配一个人的姓名作为输入

时间:2011-06-21 18:51:35

标签: regex

如果在输入时名称中没有找到以下任何内容(不区分大小写),我正在尝试返回匹配项:

博士 博士 先生 先生。 太太 太太。 女士 女士。 小姐 和 + &安培; PHD 锶 高级 JR JR。

它还需要在上面两侧寻找空格,以便不匹配“Drake”或“Missy”等。

我不是很好的正则表达式并且在regexbuddy中尝试这个也是有效的..任何人都可以帮忙吗?到目前为止我的工作还可以,但是在前面有一个字符串,但有人可以进入丹尼斯博士丹尼斯并且没事......

^\s*(?!(?:(\s*)Dr|Mr|Mrs|Miss|Ms)\b).*?$

2 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式:

/(?:^|\W)(?:(?:Dr|Mr|Mrs|Ms|Sr|Jr)\.?|Miss|Phd|\+|&)(?:\W|$)/i

编辑:基于否定前瞻的替代正则表达式:

/(?!.*?(?:^|\W)(?:(?:Dr|Mr|Mrs|Ms|Sr|Jr)\.?|Miss|Phd|\+|&)(?:\W|$))^.*$/i

答案 1 :(得分:1)

怎么样?
^\s*(?!(?:Dr|Mr|Mrs|Miss|Ms)\.?\b)(?!.*\b(?:\+|&|PHD|Sr|Jr)(?:(?:\.\B)|\b)).*?$

here on Regexr

我在你的正则表达式中添加了第二部分

(?!.*\b(?:\+|&|PHD|Sr|Jr)(?:(?:\.\B)|\b))

这会在字符串中的某个地方查找前后字边界的内容,除非它以点结尾,然后是非字边界。