我试图学习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";
}