Javascript regex.test();未捕获类型错误:未定义不是函数;

Javascript regex.test();未捕获类型错误:未定义不是函数;,javascript,jquery,regex,Javascript,Jquery,Regex,只是尝试将javascript的正则表达式功能与.test()函数结合使用 var nameRegex = '/^[a-zA-Z0-9_]{6,20}$/'; if(nameRegex.test($('#username').val())) { ... } 错误在这一行if(nameRegex.test($('#username').val()){ 调试器在那里中断并说“uncaughttypeerror:undefined不是一个函数”没有定义?应该是吗?就目前的情

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

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

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


调试器在那里中断并说“uncaughttypeerror:undefined不是一个函数”没有定义?应该是吗?

就目前的情况来看,
nameRegex
不是正则表达式,而是字符串,
string
没有
test
函数,这就是为什么会出现该错误的原因

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

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

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

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

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

...
MDN文档::


注意:在创建regex对象时,不要在字符串中提供初始的“/”斜杠…它会添加它们。

@Andrew,很高兴能提供帮助:)完美答案。谢谢