【问题标题】:Javascript regex .test() "Uncaught TypeError: undefined is not a function"Javascript regex .test()“未捕获的类型错误:未定义不是函数”
【发布时间】:2014-07-21 14:03:32
【问题描述】:

只是尝试将 javascript 的正则表达式功能与 .test() 函数结合使用。

  var nameRegex = '/^[a-zA-Z0-9_]{6,20}$/';

  if(nameRegex.test($('#username').val())) {
      ...
  }

错误在这一行if(nameRegex.test($('#username').val())) {

调试器在此处中断并显示“未捕获的 TypeError:未定义不是函数”。好像.test() 没有定义?不应该吗?

【问题讨论】:

    标签: javascript jquery regex


    【解决方案1】:

    就目前而言,nameRegex 不是正则表达式,而是字符串,String 没有 test 函数,这就是您收到该错误的原因。

    删除正则表达式周围的引号。这就是正则表达式的字面形式。

    var nameRegex = /^[a-zA-Z0-9_]{6,20}$/; //remove the quotes
    

    【讨论】:

    • @Andrew,很高兴能帮上忙 :)
    • 完美答案。谢谢你
    【解决方案2】:

    此外,您可以通过 javascript 中的固有构造函数从字符串创建 RegExp。

    var nameRegex = '^[a-zA-Z0-9_]{6,20}$';
    var regex = new RegExp(nameRegex);
    ...
    
    if(regex.test(stringToTest)) {
        ...
    }
    
    ...
    

    MDN 文档 :: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

    注意:创建正则表达式对象时,不要在字符串中提供初始的“/”斜杠...它将添加它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 2014-12-13
      相关资源
      最近更新 更多