首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript中的动态正则表达式生成

JavaScript中的动态正则表达式生成
EN

Stack Overflow用户
提问于 2015-05-08 09:30:47
回答 1查看 50关注 0票数 1

我试图通过使用参数使我的正则表达式成为通用表达式。但是,当我使用变量时,RegExp无法工作:

下面的正则表达式在我将输入限制为7个字符时正常工作。

代码语言:javascript
复制
var specialCharactersValidation = new RegExp(/^[a-zA-Z0-9]{7}$/);

但当我把它变成通用的:

代码语言:javascript
复制
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不使用字符计数进行编译。

代码语言:javascript
复制
7
requestShipmentDirectives.js:73 /^[a-zA-Z0-9]{characterCount}$/ false

这不管用。下面这一条也是如此:

代码语言:javascript
复制
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+"}$/");

这是上面代码的控制台:

代码语言:javascript
复制
7
9requestShipmentDirectives.js:73 /\/^[a-zA-Z0-9]{7}$\// false

RegExp编译但从未起作用。

输出始终是false

有什么遗漏了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-08 09:33:42

您应该使用不带RegExp/.../来允许在正则表达式中使用变量,例如:

代码语言:javascript
复制
var specialCharactersValidation = new RegExp("^[a-zA-Z0-9]{" + characterCount + "}$");

里面还有双重转义的特殊人物。

来自MDN

文字表示法在计算表达式时提供正则表达式的编译。当正则表达式保持不变时,使用文字表示法。例如,如果使用文字表示法来构造循环中使用的正则表达式,则正则表达式不会在每次迭代中重新编译。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30120395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档