带有数组的javascript正则表达式模式
我想创建一个正则表达式模式,它应该能够搜索整个数组 比如说:带有数组的javascript正则表达式模式,javascript,regex,Javascript,Regex,我想创建一个正则表达式模式,它应该能够搜索整个数组 比如说: var arr = [ "first", "second", "third" ]; var match = text.match(/<arr>/); var arr=[“第一”、“第二”、“第三”]; var match=text.match(//); 哪一个应该只能匹配 <first> or <second> or <third> ...... 或。。。。。。 但我们应该忽略
var arr = [ "first", "second", "third" ];
var match = text.match(/<arr>/);
var arr=[“第一”、“第二”、“第三”];
var match=text.match(//);
哪一个应该只能匹配
<first> or <second> or <third> ......
或。。。。。。
但我们应该忽略
或
我需要一个有效的方法
任何帮助都会很好。
谢谢
|
连接数组元素,并创建RegExp
的实例您应该使用
(a | b | c)
从列表中搜索特定单词
该列表由arr
组成,通过将值与|
字符连接为胶水
var arr = [ "first", "second", "third" ];
var match = text.match(new RegExp("<(?:"+arr.join("|")+")>")); //matches <first> <second> and <third>
var arr=[“第一”、“第二”、“第三”];
var match=text.match(新的RegExp(“”)//火柴和
请注意,如果您的“源”字可能包含正则表达式的保留字符,您可能会遇到麻烦,因此您可能需要在加入数组之前转义这些字符
可以找到这样做的良好功能:
函数regexpQuote(str,分隔符){
返回字符串(str)
.replace(新的RegExp('.\\\\+*?\\[\\\^\\]$(){}=!\;:\\'+(分隔符\\\'''+'-]','g'),'\$&');
}
因此,在这种情况下,您将
function escapeArray(arr){
var escaped = [];
for(var i in arr){
escaped.push(regexpQuote(arr[i]));
}
return escaped;
}
var arr = [ "first", "second", "third" ];
var pattern = new RegExp("<(?:"+escapeArray(arr).join("|")+")>");
var match = text.match(pattern); //matches <first> <second> and <third>
函数转义数组(arr){
var=[];
用于(arr中的var i){
逃逸推送(regexpQuote(arr[i]);
}
返回逃逸;
}
var arr=[“第一”、“第二”、“第三”];
var模式=新的RegExp(“”);
var match=text.match(模式)//火柴和
我想匹配尖括号内的标记并突出显示它们,但括号内的文本应该在数组中。在以这种方式编译之前,不要忘记确保arr
不包含|
和类似的功能字符。谢谢!现在它看起来很完美。不客气,一个很好的问题+1。很抱歉,在此期间我接到一个电话,无法及时提交所需的编辑。
var arr = [ "first", "second", "third" ];
var match = text.match(new RegExp("<(?:"+arr.join("|")+")>")); //matches <first> <second> and <third>
function regexpQuote(str, delimiter) {
return String(str)
.replace(new RegExp('[.\\\\+*?\\[\\^\\]$(){}=!<>|:\\' + (delimiter || '') + '-]', 'g'), '\\$&');
}
function escapeArray(arr){
var escaped = [];
for(var i in arr){
escaped.push(regexpQuote(arr[i]));
}
return escaped;
}
var arr = [ "first", "second", "third" ];
var pattern = new RegExp("<(?:"+escapeArray(arr).join("|")+")>");
var match = text.match(pattern); //matches <first> <second> and <third>