Moh*_*itt 10 javascript string
我试图重写该方法(w3schools 教程的一部分).
问题是使变量字符串成为正则表达式的一部分.
教程示例代码:
function myFunction() {
var str = "The rain in SPAIN stays mainly in the plain";
var res = str.match(/ain/gi);
console.log(res)
}
Run Code Online (Sandbox Code Playgroud)
我试过了:
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);
}
Run Code Online (Sandbox Code Playgroud)
我尝试的方式不起作用.
CD.*_*D.. 14
使用正则表达式构造函数,如:
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);
}
Run Code Online (Sandbox Code Playgroud)
RegExp如果要将变量值作为正则表达式传递,则需要使用构造函数.
var test = "ain";
var re = new RegExp(test, "gi");
Run Code Online (Sandbox Code Playgroud)
如果你的变量包含特殊字符,那么最好逃避它们.
var re = new RegExp(test.replace(/(\W)/g, "\\$1"), "gi");
Run Code Online (Sandbox Code Playgroud)
是的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);
Run Code Online (Sandbox Code Playgroud)
你可以搜索"动态正则表达式",你会发现: Javascript Regexp动态生成变量? 或者使用动态(变量)字符串作为JavaScript中的正则表达式模式,它们都很好地描述了它.
请注意,您将字符串传递给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"));
Run Code Online (Sandbox Code Playgroud)
这将返回:
Array [ "ain", "AIN", "ain", "ain" ]
Run Code Online (Sandbox Code Playgroud)
注意 :
该表单str.match(test, "gi");仅适用于Firefox浏览器,但已弃用,并从Firefox 39中引发控制台警告(请参阅RGraham评论).
| 归档时间: |
|
| 查看次数: |
13045 次 |
| 最近记录: |