我试图学习JavaScript中的正则表达式测试,但发现它很难可视化。在下面的示例中,我试图测试用户输入的名字以确保其没有:


号码
非字母字符(例如,!,@,%等符号)
空格不能超过1个(“ Sarah Jane”没问题,但“ Sarah Jane”不是)


到目前为止,这是我的功能,是否有任何明显的语法错误,尤其是在reg表达式中突出?谢谢。

<script language="javascript" type="text/javascript">
        function nameValidate() {
            var input = document.forms['myForm']['fName'].value;
            var re = /\d\s{2,}\W/;
            if (input == "") {             // Make sure there is something filled out
                document.getElementById('fNameError').style.color = "red";
                document.getElementById('fNameError').innerHTML = "** You must enter a name";
            }
            else if (re.test(input)) {
                document.getElementById('fNameError').style.color = "red";
                document.getElementById('fNameError').innerHTML = "** Names must contain only letters a-z or A-Z and no more than one space between names";
            }
        }
    </script>

最佳答案

根据您的描述,此正则表达式将更适合您:

var re = /^[a-z]+( [a-z]+)?$/i;


然后将re.test反转为:

else if (!re.test(input)) {
  document.getElementById('fNameError').style.color = "red";
  document.getElementById('fNameError').innerHTML = "** Names must contain only letters a-z or A-Z and no more than one space between names";
}

07-26 00:27
查看更多