匹配以首字母开头的字符串,后跟有效的字母字符串 - 正则表达式

Nes*_*esh 2 javascript regex

我试图匹配一个以 (Mr.|Mrs.|Ms.|Dr.|Er.) 开头的字符串,后跟任何字符串 [a-zA-Z] 但不知何故它也将它传递给“Er.Dr.” ”。

让我知道我在这里的正则表达式做错了什么。

var input = [
    {str: "Mr.X", expectedValue: true},
    {str: "Mrs.Y", expectedValue: true},
    {str: "Dr#Joseph", expectedValue: false},
    {str: "Er .Abc", expectedValue: false},
    {str: "Er.Dr.", expectedValue: false},
    {str: "Er.Abc", expectedValue: true}
];

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

input.forEach(x => {
    var answer;
    var matchStr;
    answer = re.test(x.str);
    matchStr = x.expectedValue === answer ? "MATCH" : "NO MATCH";
    console.log("------------------------------------------------------------------------------");
    console.log(`"${x.str}" | Expected Output: ${x.expectedValue} | My Output: ${answer} | ${matchStr}`);
    console.log("------------------------------------------------------------------------------");
})
Run Code Online (Sandbox Code Playgroud)

输出 -

正则表达式 2

Nin*_*olz 5

您可以稍微更改正则表达式,从

/^(Mr|Mrs|Ms|Dr|Er)\.+[A-Za-z]/
Run Code Online (Sandbox Code Playgroud)

/^(Mr|Mrs|Ms|Dr|Er)\.[A-Za-z]+$/
Run Code Online (Sandbox Code Playgroud)

没有多个.并检查字母直到字符串末尾。

/^(Mr|Mrs|Ms|Dr|Er)\.+[A-Za-z]/
Run Code Online (Sandbox Code Playgroud)