上方正则表达式问题出现在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));
对不起,我的正则表达式不好,我目前正处于学习阶段。
答案 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]*$/);
这将在检查字符串时使搜索严格。希望这会有所帮助:)