在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,具体是什么意思?
第一种方法为什么不行??都是验证纯数字和带有“-”格式的,但为什么不行??
展开
 我来答
阳光上的桥
2011-11-21 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65813
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
正则表达式的前后使用/是语法规定,犹如字符串的前后使用引号一样。

你这个地方加不加g无所谓的,g表示多次匹配,只有在需要对每个匹配的项目进行处理(例如替换)时才有特殊意义。

第一个因为没有^和$,所以只有要数字和-就对,第二个有这两个符号,^表示开始,$表示结束,整体的意思就是必须完整匹配,不得有其它内容。例如ABC028-88888就可以匹配第一种方式,但是在第二种就会失败。

还有问题吗?
cainiaokan
2015-06-11 · TA获得超过2917个赞
知道小有建树答主
回答量:651
采纳率:66%
帮助的人:611万
展开全部

在JavaScript当中,声明一个正则表达式对象的方式有两种。

一种是直接声明RegExp对象,一种是使用字面量。


你说的//双斜杠,就是使用字面量表达式的方式。两者并没有本质不同。

就像声明一个数组,我们既可以用new Array() 又可以 使用一对中括号[]的方式。

用字面量的方式有一个方便之处在于。不需要转移反斜杠字符了。因为在字符串中两个反斜杠代表一个反斜杠。


因此说,下面两种方式是等价的,只不过很多时候使用字面量的方式更加简介。通常这么设计的原因没有太多考量,主要是为了书写方便而已。

var rExp1 = new RegExp("\\d+");
var rExp2 = /\d+/;
//以上是等价的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
EvilProxy
2011-11-21 · TA获得超过294个赞
知道小有建树答主
回答量:280
采纳率:100%
帮助的人:263万
展开全部
因为,js可能并不是第一个使用正则表达式的语言
而perl这种语言却有最强大的正则,在perl里面正则就是主要用斜杠/分割的
在比较严格的语言,比如java里面,就不能用/,所以java用引号"

g表示连续循环匹配,在你当前用途里面是没有什么用处的
加上^字符串开始和$字符串结束,就限定了你的正则的适用范围了
就不会出现类似以下的错误 g34-24jkh 也会被匹配
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
焦博5m
2011-11-21 · TA获得超过201个赞
知道答主
回答量:286
采纳率:0%
帮助的人:96.1万
展开全部
开始结束!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式