Javascript regex .test()" Uncaught TypeError:undefined不是函数"

时间:2014-06-01 08:00:50

标签: javascript jquery regex

尝试使用.test()函数使用javascript的正则表达式功能。

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

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

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

调试器中断并说" Uncaught TypeError:undefined不是函数" 。好像.test()似乎没有定义?不应该吗?

2 个答案:

答案 0 :(得分:35)

目前看来,nameRegex不是正则表达式,而是字符串而String没有test功能,这就是您收到错误的原因。

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

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

答案 1 :(得分:7)

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

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

if(regex.test(stringToTest)) {
    ...
}

...

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

注意:请勿提供最初的' /'

创建正则表达式对象时,在字符串中斜线...