为什么以下JavaScript正则表达式无法正常工作?

时间:2019-12-25 07:32:26

标签: javascript regex

上方正则表达式问题出现在HackerRank上,如果字符串包含Mr./Mrs./Ms./Dr./Er,则应返回true。开头是字母组。

例如: Abc先生是真实的,但Abc先生是对的。不是 但是我的代码返回了Mr.Abc。确实如此。

let inp="Mr.Abc.";
let re=new RegExp(/^Mr\.|^Ms\.|^Mrs\.|^Dr\.|^Er\.[A-Za-z]/);
console.log(re.test(inp));

对不起,我的正则表达式不好,我目前正处于学习阶段。

2 个答案:

答案 0 :(得分:6)

这是一个分组问题,也是一个事实,即您没有使用$测试字符串的结尾。 Mr.Abc.使用您的表达式返回true,因为它与^Mr\.

相匹配

按如下所示更改您的表情:

let re = /^(Mr|Ms|Mrs|Dr|Er)\.[A-Za-z]+$/;

答案 1 :(得分:1)

我尝试了同样的事情,并通过简单的更改就解决了这个问题。

let re = new RegExp(/^Mr\.|^Ms\.|^Mrs\.|^Dr\.|^Er\.[A-Za-z]*$/);

这将在检查字符串时使搜索严格。希望这会有所帮助:)