微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Javascript正则表达式工作正常,但不是第二次,再次工作第三次,而不是第四次等等

Javascript正则表达式第一次工作正常,但不是第二次,再次工作第三次,而不是第四次等等:(

脚本:

<script language="javascript" type="text/javascript">
    var reg = /[^\w]/gi;
    function checkNonWordChars() {
        var str = $("#TestTextBox").val();
        if (reg.test(str)) {
            alert('!!! Non-Word Char Exists !!!');
        }
        else {
            alert('input accepted');
        }
    }    
</script>

HTML:

<input type="text" id="TestTextBox"  />
<input type="button" value="Test" onclick="checkNonWordChars();" />

如果我点击按钮一次,它会发出一个警告,说“!!!非Word Char Exists !!!“但是如果再次点击它,它会触发一个警告,说”输入接受“:(

解决方法

选项1

使用构造函数而不是字面符号:

var reg = new RegExp('[^\w]','gi');

更多关于这两者之间的差异:https://developer.mozilla.org/en-US/docs/Core_JavaScript_1.5_Guide/Regular_Expressions?redirect=no

选项2

用$号标记字符串的末尾:

var reg = /[^\w$]/gi;

选项3

如果您的正则表达式使用“g”标志,则可以多次使用exec方法来查找相同字符串中的连续匹配.当这样做时,搜索从正则表达式的lastIndex属性指定的str的子串开始
(测试也将提前lastIndex属性).

资料来源:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp/exec

因此,在您的情况下,测试将仅工作在第1,第3,第5,…时间.

只有在Firefox 3中有一个标志y,当指定exec总是从0开始不是lastIndex,但这在你的情况下可能没有用.

您可以删除g标志.

原文地址:https://www.jb51.cc/js/155010.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐