如何修复这个简单的正则表达式测试?

How do I fix this simple regex test?

我是这一切的新手 - 我想做的就是使用 onblur 检查名字和姓氏。这可能是一个基本问题,但我似乎无法弄清楚为什么它总是吐出 ELSE 语句而不吐出 IF。我已经尝试过以多种方式更改 re1,但似乎无法解决问题。

function validateFirst () {
    var fName = document.getElementById("firstName").value;
    var re1= /^[a-zA-Z ,.'-] {2,}$/;

    if (re1.test(fName)) {
        document.getElementById ("firstNamePrompt").style.color = "green";
        document.getElementById ("firstNamePrompt").innerHTML = "<strong>valid</strong>";
        return true;
    }
    else {
        document.getElementById ("firstNamePrompt").style.color = "red";
        document.getElementById ("firstNamePrompt").innerHTML = "<strong>Enter 2-15 characters</strong>";
        return false;
    }
}

在我的html中,我是这样写的:

    <tr>
        <td class="label_col">First Name</td>
        <td class="input_col"><input name="firstName" id="firstName" type="text" onblur="validateFirst();"> </td>
        <td class="feedback_col"><span id="firstNamePrompt">&nbsp;</span></td>
   </tr>

我可能遗漏了一些简单的东西,但是对于这个初学者的任何帮助将不胜感激!

您的模式需要字符串以 space 结尾,因此它不会匹配,除非 fName 末尾有 space。

试试这个模式,它满足您的用户名只包含两种情况的字母的要求,spaces、逗号、撇号、连字符、句点,并且最少有 2 个字符,最多有 15 个字符:

^[a-zA-Z ,.'-]{2,15}$