【问题标题】:alphanumeric javascript regex failing [duplicate]字母数字javascript正则表达式失败[重复]
【发布时间】:2015-03-26 23:59:45
【问题描述】:

我正在尝试中断向字母数字字符测试字段的表单提交。谷歌搜索后,我发现很多这种正则表达式的实现,每个人都声称效果很好......

if( !jQuery('input[name=myUsername]').val().test(/^[a-zA-Z0-9]+/) ) {
        alert('ERROR: Your username contains invalid characters. Please use numbers and letters only. No spaces, no punctuation.');
        jQuery('input[name=myUsername]').focus();
        return false;
}

但是,这只会在值以非字母数字字符开头时返回 false 并创建警报。如果我输入“bo$$”它允许它作为字母数字即使 $ 不是字母数字字符...如果我输入“$$ob”它会失败并发出警报。

我该如何解决这个问题,以便整个值中的任何无效字符都会失败?我试过 .match() 而不是 .test() 但同样的问题我假设它是正则表达式中的错误

【问题讨论】:

  • 试试/^[a-zA-Z0-9]+$/

标签: javascript jquery regex


【解决方案1】:

使用锚点$ 避免在末尾匹配不需要的字符:

/^[a-zA-Z0-9]+$/

【讨论】:

    【解决方案2】:
    ^[a-zA-Z0-9]+$
    

    $ 放在结束锚点以限制这一点。没有$,您的正则表达式将进行部分匹配。

    $ assert position at end of a line
    

    bo$$ 将与bo 进行部分匹配,因为$ 不存在。

    【讨论】:

    • 通常不要在否决票时损害我的匿名性,但在这种情况下,我会破例,尽管我会在几个小时后删除评论。由于原件不清楚/给人留下了错误的印象,因此投反对票。您的编辑然后修复了它,所以我推翻了反对意见。
    • 很公平 - 我有点着急。你是对的 - 评论通常是有帮助的/只是公平的。
    猜你喜欢
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 2011-09-16
    • 2014-05-24
    相关资源
    最近更新 更多