javascript 利用正则表达式验证容易出现的小问题
新手一个而已,不足之处还望和各位大神斧正。大笑
今天在练习javascript利用正则表达式验证时遇到了一点问题,就是无法正确匹配,提交表单不成功。当时是这么写的:
<script type="text/javascript">
function Check(){
var txtnum=document.getElementById("txtNum").value;
if(txtnum != null && txtnum != undefined && txtnum != ""){
if(checkValue(txtnum)){
alert("登陆成功");
return true;
}else{
alert("登陆失败");
return false;
}
}
}
function checkValue(txtnum){
var reg=new RegExp("/^[a-z]\d{4}$/");
//var reg=new RegExp("^[a-z]\d{4}$");//当时这样测试也不行
var result=reg.test(txtnum);
return result;
}
</script>
经过查看资料之后发现了一个很容易忽略小地方:
var reg=new RegExp("/^[a-z]\d{4}$/");
错误就在与双引号,应该是:
var reg=new RegExp(/^[a-z]\d{4}$/); 这是用 \ 括起来, 或者:
var reg=new RegExp("^[a-z]\\d{4}$"); 如果使用双引号括起来的话就需要将特殊字符转义,比如这里的 \d 就要转义为 \\d
也就是说:"" 与 / 不共存。有 " " 没 \ ,有 \ 没 "" 。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
我们要想验证字符串是否符合预定要求,可以利用RegExp的test()方法,或者使用字符串的match()方法: 一、match()方法:
这个在java上也有,参数实际上就是一个正则表达式(包括str.replace("xxxx","XXX")方法里面的参数也可以是正则。API手册)
var reg=new RegExp(/^[a-z]\d{4}$/); //开头是字母,后跟4个数字,另外一种书写方式:
result=txtnum.match(reg)
或者:
result=txtnum.match(/^[a-z]\d{4}$/);
即不用创建RegExp对象
注意,如果利用match没有找到匹配值,那么返回null,根据这个特点进行条件判断即可
PS1:我们在w3cshool上看例子时它部分例子是如下这么写的:
&