【问题标题】:syntax error on function to detect non-alphanumeric characters in a value?检测值中的非字母数字字符的函数语法错误?
【发布时间】:2013-05-26 06:19:03
【问题描述】:

我知道这个论坛中有数百(或可能数千)关于regex 功能的问题。我已经阅读并咨询了几本,根据所有假设,我应该有答案,我的功能应该可以工作,但事实并非如此。

我尝试构建一个函数,其中一项检查是只允许字母数字字符。

代码的删减版是这样的:

function functionName() {
    var x = $("#inputId").val();

    //trying to locate any/all non alphanumeric characters & spaces
    var regex = /^[^0-9a-zA-Z\s]+$/g 

    if ( x.indexOf(regex) >= 0 ){
        alert("message");
        return false;
    }
}

有人知道我哪里出错了吗?

谢谢

【问题讨论】:

  • “59,468 个问题标记为 [regex]”,确切地说:-)
  • 类似fiddle ?

标签: javascript regex syntax indexof


【解决方案1】:

你不应该使用indexOf;你应该使用test。这也是您正在使用的一个有趣的正则表达式。我在下面修改了它以匹配 valid 字符串而不是无效。

function functionName(){
    var x = $("#inputId").val();

    var regex = /^[a-zA-Z0-9]+$/g;

    if ( x.test(regex) ){
        alert("Only contains alphanumeric characters. No punctuation or spaces!");
    } else {
        return false;
    }
}

【讨论】:

  • 好的!非常感谢@Trevor Dixon!如果该值仅由非字母数字字符组成,则它可以工作,但是如果我测试它将非字母数字与该值混合在数字之后,那么匹配似乎不起作用。我想你可能对此没有提示?
  • x.match(/[^a-zA-Z0-9]/)。为什么要查找 invalid 字符?在这种情况下,似乎更容易定义一个匹配 valid 字符串的正则表达式,然后对其进行测试。
  • 是的,成功了。我确实记得在另一篇文章中读过一些关于 $ 关闭字符串(或类似的东西)的内容。我认为这里的逻辑类似。再次感谢@Trevor Dixon
【解决方案2】:

您的正则表达式仅匹配完全由无效字符组成的字符串。当至少有一个无效字符时,您真正想要的是一个匹配

var regex = /[^0-9a-zA-Z\s]/;
if (regex.test(x)) ...

【讨论】:

    【解决方案3】:

    您缺少最后的“}”

    【讨论】:

      猜你喜欢
      • 2021-07-26
      • 2011-09-05
      • 2015-11-01
      • 2017-04-01
      • 1970-01-01
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 2011-12-20
      相关资源
      最近更新 更多