我试图通过使用参数使我的正则表达式成为通用表达式。但是,当我使用变量时,RegExp无法工作:
下面的正则表达式在我将输入限制为7个字符时正常工作。
var specialCharactersValidation = new RegExp(/^[a-zA-Z0-9]{7}$/);但当我把它变成通用的:
var characterCount = parseInt(attrs.limitCharacterCount); // Value is 7 and type is int
console.log(characterCount); // Value is 7
var specialCharactersValidation = new RegExp(/^[a-zA-Z0-9]{characterCount}$/);这是上面代码的控制台。regex不使用字符计数进行编译。
7
requestShipmentDirectives.js:73 /^[a-zA-Z0-9]{characterCount}$/ false这不管用。下面这一条也是如此:
var characterCount = parseInt(attrs.limitCharacterCount); // Value is 7 and type is int
console.log(characterCount); // Value is 7
var specialCharactersValidation = new RegExp("/^[a-zA-Z0-9]{"+characterCount+"}$/");这是上面代码的控制台:
7
9requestShipmentDirectives.js:73 /\/^[a-zA-Z0-9]{7}$\// falseRegExp编译但从未起作用。
输出始终是false。
有什么遗漏了吗?
发布于 2015-05-08 09:33:42
您应该使用不带RegExp的/.../来允许在正则表达式中使用变量,例如:
var specialCharactersValidation = new RegExp("^[a-zA-Z0-9]{" + characterCount + "}$");里面还有双重转义的特殊人物。
来自MDN
文字表示法在计算表达式时提供正则表达式的编译。当正则表达式保持不变时,使用文字表示法。例如,如果使用文字表示法来构造循环中使用的正则表达式,则正则表达式不会在每次迭代中重新编译。
https://stackoverflow.com/questions/30120395
复制相似问题