尝试使用.test()
函数使用javascript的正则表达式功能。
var nameRegex = '/^[a-zA-Z0-9_]{6,20}$/';
if(nameRegex.test($('#username').val())) {
...
}
错误在此行if(nameRegex.test($('#username').val())) {
调试器中断并说" Uncaught TypeError:undefined不是函数" 。好像.test()
似乎没有定义?不应该吗?
答案 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
注意:请勿提供最初的' /'
创建正则表达式对象时,在字符串中斜线...