奇怪的JS 正则表达式问题

    今天在项目中发现一个郁闷了我好一段时间的问题。先贴出问题代码:

定义了一个全局的正则表达式常量
// 手机号码 正则表达式
var REGX_PHONE = /^(1(3[0-9]|4[57]|5[012356789]|8[0-9])\d{8})$/g;
###################### 下面的代码在另一个文件 ######################################
var value = '13872222222'; // 随意写的号码
var isLegal = REGX_PHONE.test(value);

    用console.log(isLegal)打印出值时,奇怪的问题出现了,先是false,然后true,然后又是false,接下来就是更替出现了。

    我不解啊,纳闷啊,于是将REGX_PHONE值打出来,value也打出来,没看出有啥不对的。然后我更纠结了~

    我尝试直接使用 /^(1(3[0-9]|4[57]|5[012356789]|8[0-9])\d{8})$/g.test(value),没问题,一直是true。

    然后,我将原表达式改成:var isLegal = new RegExp(REGX_PHONE).test(value); 这样子也没问题了。

    好吧,我就改成这样子用了,但是至于为嘛,我还是不怎么清楚。应该是那个正则常量的问题,它没被很好的理解为一个正则表达式吧。


你可能感兴趣的:(js,正则表达式,常量)