在js中,js正则表达式为什么要带// 双斜杠 。
比如我想验证一个变量也就是电话号码,是否属于这种格式的027-88888或88888,我想这样写没有效:当然区号不一定是027,电话也不一定全是8,只是这种格式而已。va...
比如 我想验证一个变量也就是电话号码, 是否属于这种格式的027-88888或88888,我想这样写没有效:
当然 区号不一定是027,电话也不一定全是8 ,只是这种格式而已。
var phone = $("#phone").val();
var reg = /\d+-\d+/;
var reg2 = /\d+/;
if (reg.test(phone) || reg2.test(phone)){
$("#phone").next().text("");
return true;
}
else{
$("#phone").next().text("格式不正确:电话格式为0755-88888888或88888888");
return false;
}
上述代码无效。
但把reg和reg2改成这样后 却可以:
var reg = /^\d+-\d+$/g;
var reg2 = /^\d+$/g;
我想知道为什么reg或reg2前面和后面要加“/”斜杠,还有就是为什么最后还要加个g,具体是什么意思?
第一种方法为什么不行??都是验证纯数字和带有“-”格式的,但为什么不行?? 展开
当然 区号不一定是027,电话也不一定全是8 ,只是这种格式而已。
var phone = $("#phone").val();
var reg = /\d+-\d+/;
var reg2 = /\d+/;
if (reg.test(phone) || reg2.test(phone)){
$("#phone").next().text("");
return true;
}
else{
$("#phone").next().text("格式不正确:电话格式为0755-88888888或88888888");
return false;
}
上述代码无效。
但把reg和reg2改成这样后 却可以:
var reg = /^\d+-\d+$/g;
var reg2 = /^\d+$/g;
我想知道为什么reg或reg2前面和后面要加“/”斜杠,还有就是为什么最后还要加个g,具体是什么意思?
第一种方法为什么不行??都是验证纯数字和带有“-”格式的,但为什么不行?? 展开
4个回答
展开全部
在JavaScript当中,声明一个正则表达式对象的方式有两种。
一种是直接声明RegExp对象,一种是使用字面量。
你说的//双斜杠,就是使用字面量表达式的方式。两者并没有本质不同。
就像声明一个数组,我们既可以用new Array() 又可以 使用一对中括号[]的方式。
用字面量的方式有一个方便之处在于。不需要转移反斜杠字符了。因为在字符串中两个反斜杠代表一个反斜杠。
因此说,下面两种方式是等价的,只不过很多时候使用字面量的方式更加简介。通常这么设计的原因没有太多考量,主要是为了书写方便而已。
var rExp1 = new RegExp("\\d+");
var rExp2 = /\d+/;
//以上是等价的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为,js可能并不是第一个使用正则表达式的语言
而perl这种语言却有最强大的正则,在perl里面正则就是主要用斜杠/分割的
在比较严格的语言,比如java里面,就不能用/,所以java用引号"
g表示连续循环匹配,在你当前用途里面是没有什么用处的
加上^字符串开始和$字符串结束,就限定了你的正则的适用范围了
就不会出现类似以下的错误 g34-24jkh 也会被匹配
而perl这种语言却有最强大的正则,在perl里面正则就是主要用斜杠/分割的
在比较严格的语言,比如java里面,就不能用/,所以java用引号"
g表示连续循环匹配,在你当前用途里面是没有什么用处的
加上^字符串开始和$字符串结束,就限定了你的正则的适用范围了
就不会出现类似以下的错误 g34-24jkh 也会被匹配
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
开始结束!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询