名称与标题的Javascript正则表达式匹配

名称与标题的Javascript正则表达式匹配,javascript,Javascript,我试图为名字创建JavaScript正则表达式,标题像John Son先生。这个名字可以有很多像Mr.Miss这样的头衔。呃博士夫人。等等,我写了一个正则表达式 var re=/(\b(Mr\.| Mrs\.|Ms\.|Dr\.|Er\.{1}[a-zA-Z])/i以获取有效名称。regex中的错误是,如果标题出现两次像Mr。约翰森 我在标题后面指定了量词{1}。但如果标题在名称前出现两次,则仍返回true。你能告诉我这个正则表达式有什么错误吗?每个人说的正则表达式没有什么问题。由于Mr.的存在

我试图为名字创建JavaScript正则表达式,标题像John Son先生。这个名字可以有很多像Mr.Miss这样的头衔。呃博士夫人。等等,我写了一个正则表达式

var re=/(\b(Mr\.| Mrs\.|Ms\.|Dr\.|Er\.{1}[a-zA-Z])/i
以获取有效名称。regex中的错误是,如果标题出现两次像Mr。约翰森


我在标题后面指定了量词{1}。但如果标题在名称前出现两次,则仍返回true。你能告诉我这个正则表达式有什么错误吗?

每个人说的正则表达式没有什么问题。由于Mr.的存在,给定字符串被正则表达式匹配。第二个称呼无关紧要,并且被正则表达式忽略,因为第一个称呼与正则表达式匹配

您可以使用以下链接测试您的regex online regex101.com,并清楚了解您的regex如何匹配

如果你想匹配失败,如果称呼出现不止一次,那么你需要尝试其他方法。 例如,如果称呼语只出现一次,您可以尝试与姓名匹配的称呼语(\b(Mr\.\Mrs\.\Ms\.\Dr\.\Er\.{1}^[\w\s]*$)/i

上面的正则表达式只将单词和空格视为问候语后的有效字符,因此问候语中典型的
会破坏正则表达式。
可能还有其他方法可以达到相同的效果,因此最好的方法是阅读regex(这里是一个),然后尝试不同的解决方案。

您的regex没有问题。由于存在
Mr,给定字符串正被正则表达式匹配。
第二个称呼无关紧要,并且被正则表达式忽略,因为第一个称呼与正则表达式匹配。您可以使用以下链接在线测试您的正则表达式,并获得正则表达式如何匹配的清晰图片。如果您希望匹配失败,如果称呼出现不止一次,那么您需要尝试其他方法。这里有一个合适的正则表达式,仅当称呼出现一次时,它才会与名称i匹配/(\b(Mr\.| Mrs\.| Ms\.| Dr\.| Er\.{1}^[\w\s]*$)/i尝试了排除单词选项,并且只匹配了一次标题。变量re=/(\b(先生、女士、女士、博士、Er)(?!先生、女士、女士、博士、Er)/)i;谢谢你的回复。正如我在前面的评论中所写的那样,我通过排除第二次出现的title:var re=/(\b(Mr\.| Mrs\.| Ms\.| Dr\.| Er\)(?!Mr\.| Mrs\.| Ms\.| Dr\.| Er\)[a-zA-Z])/I;再次感谢,