javascript正则表达式是从测试时出现错误的变量中获取的;不是一个函数;
在纯javascript中:运行以下命令时出现错误:javascript正则表达式是从测试时出现错误的变量中获取的;不是一个函数;,javascript,regex,testing,Javascript,Regex,Testing,在纯javascript中:运行以下命令时出现错误: var arg_regex = 'myregex:/^[:a-z0-9\s!\\\/]+$/i'; regex_patt = arg_regex.replace(/^myregex:/,''); if(regex_patt.test(stringtocheck)){ //good } else { //bad } 错误: regex_patt.test is not a function 请帮忙。无法理解它为什么会失败。费利克斯说:
var arg_regex = 'myregex:/^[:a-z0-9\s!\\\/]+$/i';
regex_patt = arg_regex.replace(/^myregex:/,'');
if(regex_patt.test(stringtocheck)){
//good
} else {
//bad
}
错误:
regex_patt.test is not a function
请帮忙。无法理解它为什么会失败。费利克斯说:
regex_string = arg_regex.split('myregex:/').join('').split('/i').join('');
regex_patt = new RegExp(regex_string);
必须首先从字符串构造RegExp对象
在上面的示例中,您正在替换一个静态字符串,因此您可以使用string.replace('staticTextToRemove','')
或使用上面显示的拆分和连接
我听说split().join()
的性能稍微好一点。。。这是一个巧妙的技巧。尝试添加这一行,让regex_patt成为一个对象:
regex_patt = eval(regex_patt);
regex\u patt
仍然是一个字符串,它不是正则表达式。您必须替换更多。。。离开/…/i
将导致意外行为(即字符按字面意思)。本例中的正则表达式标志会发生什么变化?您是指在开头和结尾看到的/
?那些都被剥去了。在声明正则表达式文字时,您需要这些,就像您一直在使用的一样。但是当您使用RegExp
对象时,您会传入一个不被/
's.thx包围的字符串来解释regex'object'。我在w3c网站上读了很多关于RegExp对象的文章,但我不知道它做了什么,它会把同一个表达式变成什么,然后系统会开始把它看作正则表达式。发送给所有人!