Javascript:String.match()-在正则表达式中传递字符串变量
Javascript: String.match() - pass string variable in regular expression
我试图重写该方法(w3schools教程的一部分)。
问题是使变量字符串成为正则表达式的一部分。
教程示例代码:
function myFunction() {
var str = "The rain in SPAIN stays mainly in the plain";
var res = str.match(/ain/gi);
console.log(res)
}
我尝试过:
function myFunction() {
var str = "The rain in SPAIN stays mainly in the plain";
var test = "ain";
var re = "/"+test+"/gi";
var res = str.match(re);
console.log(res);
}
我尝试的方法没有奏效。
使用regex构造函数,如:
function myFunction() {
var str = "The rain in SPAIN stays mainly in the plain",
test = "ain",
re = new RegExp(test, 'gi'),
res = str.match(re);
console.log(res);
}
如果要将变量的值作为正则表达式传递,则需要使用RegExp
构造函数。
var test = "ain";
var re = new RegExp(test, "gi");
如果您的变量包含特殊字符,最好对这些字符进行转义。
var re = new RegExp(test.replace(/('W)/g, "''$1"), "gi");
请注意,您将一个字符串传递给match
。如果我们遵循文档,这将执行new RegExp(test)
。因此,您应该避免使用/
和/gi
字符串,并向RegExp构造函数添加相应的标志:默认构造函数既不添加全局搜索(g
),也不添加不区分大小写的搜索(i
)。
因此,你的问题的解决方案:
var str = "The rain in SPAIN stays mainly in the plain";
var test = "ain";
var res = str.match(new RegExp(test, "gi"));
这将返回:
Array [ "ain", "AIN", "ain", "ain" ]
注:
表单str.match(test, "gi");
仅适用于Firefox浏览器,但已被弃用,并从Firefox 39发出控制台警告(请参阅RGraham注释)。
match()
不适用于字符串文字
您可以使用var re = new RegExp(test,"gi");
var str = "The rain in SPAIN stays mainly in the plain";
var test = "ain";
var re = new RegExp(test,"gi");
var res = str.match(re);
console.log(res);
您本可以搜索"动态正则表达式",您会发现:Javascript Regexp从变量动态生成?或者在JavaScript中使用动态(变量)字符串作为正则表达式模式,这两种模式都很好地描述了它。
相关文章:
- 在正则表达式中使用变量
- Javascript 复杂的正则表达式与变量
- Jquery 替换所有文本语法正则表达式中的变量
- 用于比较 HTML 标记内的变量的正则表达式
- javascript中正则表达式(match)中变量的使用错误
- javascript正则表达式:使用单词边界将变量传递给regexp
- 使用正则表达式中的变量与$和^匹配字符串
- 正则表达式提取PHP中的JavaScript变量
- 调整 javascript 正则表达式以过滤来自 url 的变量
- 什么是用于断开变量可能包含“&”的查询字符串的正则表达式
- jQuery 验证器正则表达式使用数组或变量
- 使用变量中的 gi 标志创建正则表达式
- Javascript 正则表达式从句子中检索变量
- 正则表达式中的变量
- 在 javascript 的正则表达式中使用变量
- 添加另一个变量后,正则表达式替换不起作用
- JavaScript 正则表达式,用于获取以 @ 字符开头的字符串中的变量列表
- 仅与字母字符匹配的正则表达式变量
- 使用正则表达式+变量的正则表达式
- 使用正则表达式变量作为普通变量- Javascript