为什么我的Javascript正则表达式输出不一致?

这个问题在这里已经有了答案:

  • 为什么带有全局标志的RegExp会给出错误的结果? 5个答案

  • 您正在使用全球( g )国旗。

    根据MDN:

    exec() (或与它结合)一样,在同一个全局正则表达式实例上多次调用的test()将超过先前的匹配。

    你可以通过设置lastIndex来解决这个问题。


    因为你用于testg修饰符。

    MDN:

    在同一个全局正则表达式实例上调用多次的test()将超过先前的匹配。

    在每个解决此问题后使用regex.lastIndex = 0 。 或者,如果不需要多次匹配,请删除/g修饰符。

    function checkSpecificLanguage(text_val) {
            var regex =   /^[u3000-u303Fu3040-u309Fu30A0-u30FFuFF00-uFFEFu4E00-u9FAFu2605-u2606u2190-u2195u203B]+$/ig; 
            console.log( text_val+"-"+regex.test(text_val) );
            regex.lastIndex = 0
            console.log( text_val+"-"+regex.test(text_val) );
            regex.lastIndex = 0
            console.log( text_val+"-"+regex.test(text_val) );
            regex.lastIndex = 0
            console.log( text_val+"-"+regex.test(text_val) );
            regex.lastIndex = 0
            console.log( text_val+"-"+regex.test(text_val) );
          return  regex.test(text_val);
        }
    checkSpecificLanguage("でしたコンサート");
    链接地址: http://www.djcxy.com/p/92591.html

    上一篇: Why output of my Javascript regex is inconsistent?

    下一篇: RegEx Not Recognizing Invalid Email