JavaScript/node.js将数组转换为正则表达式.匹配if语句的参数
JavaScript/node.js convert array into regex.match arguments for if statement
我已经编写了一个节点模块,其中有几个地方使用正则表达式来限制要操作的文件,如下所示:
if (!file.match(/'/node_modules'//) && !file.match(/'/fontawesome'//) && !file.match(/'/docs'//) && !file.match(/'/target'//) && !seenFile[file]) {
//do some processing
}
我正在尝试修改模块,以接受作为数组的用户输入,即:
['/node_modules/', '/fontawesome/', '/docs/', '/target/']
有没有一种好的方法可以将数组转换为正则表达式?我知道如果我不使用file.match,apply可能会起作用,但我不确定它在这种情况下是否会起作用。提前谢谢。
您可以使用值数组来构建动态正则表达式:
- 用
.replace(/[.*+?^${}()|[']'']/g, "''$&");
转义所有特殊正则表达式字符 - 借助
|
交替运算符构建正则表达式 - 将正则表达式与
String#match
或RegExp#exec
方法一起使用
以下是一个工作片段:
var ar = ['/node_modules/', '/fontawesome/', '/docs/', '/target/'];
ar = ar.map(function(item) {
return item.replace(/[.*+?^${}()|[']'']/g, "''$&");
});
var rx = RegExp(ar.join("|"));
var file = "/node_modules/d.jpg";
if (!file.match(rx)) {
console.log("No stop words found!");
} else {
console.log("Stop words found!");
}
相关文章:
- Grunt匹配正则表达式
- 匹配正则表达式不分隔大写或不大写
- 如何匹配正则表达式/JavaScript 中出现的特定长度
- 匹配正则表达式中的内括号表达式
- 匹配正则表达式中的模板化字符串
- 如何改进多词匹配正则表达式
- 仅当正则表达式不以 javascript 中的模式开头时才匹配正则表达式
- 匹配正则表达式或(管道)子句中的两个精确字符
- 为什么 |匹配正则表达式中的每个字符串
- 匹配正则表达式中的字符*而不是*
- 如何在Happy解析器中匹配正则表达式
- javascript的防弹URL匹配正则表达式
- 按顺序匹配正则表达式模式
- 匹配正则表达式'A00000'格式的javascript
- 匹配正则表达式 javascript 中的 “;” 字符
- 匹配正则表达式javascript中的特殊字符
- 匹配正则表达式,然后删除该正则表达式的子集
- 在Javascript中,获取匹配正则表达式的长度
- doc_id匹配正则表达式的文档的临时couchdb视图
- 字符串中的所有字符必须匹配正则表达式