我想在JavaScript中创建一个String.replaceAll()方法,我认为使用RegEx将是最简洁的方法.但是,我无法弄清楚如何将变量传递给RegEx.我已经可以做到这一点,它将用"A"替换所有"B"的实例.
"ABABAB".replace(/B/g, "A");
Run Code Online (Sandbox Code Playgroud)
但我想做这样的事情:
String.prototype.replaceAll = function(replaceThis, withThis) {
this.replace(/replaceThis/g, withThis);
};
Run Code Online (Sandbox Code Playgroud)
但显然这只会替换文本"replaceThis"...所以如何将此变量传递给我的RegEx字符串?
我试图重写该方法(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)
我尝试的方式不起作用.
可能重复:
Javascript Regexp动态生成?
我正在尝试使用变量创建一个新的RegExp; 但是,我不知道sytax这样做.任何帮助都会很棒!
我需要改变这个:(v.name.search(new RegExp(/ Josh Gonzalez/i))!= -1)将其更改为:(v.name.search(new RegExp(/ q/i))! = -1).我基本上需要用变量q~var q = $('input [name ="q"]').val();来替换"josh" .
谢谢您的帮助
$( 'form#search-connections' )
.submit( function( event )
{
event.preventDefault();
var q = $( 'input[name="q"]' ).val();
console.log( _json );
$.each( _json, function(i, v) {
//NEED TO INSERT Q FOR JOSH
if (v.name.search(new RegExp(/Josh Gonzalez/i)) != -1) {
alert(v.name);
return;
}
});
}
);
Run Code Online (Sandbox Code Playgroud) 例如,如果我想匹配ips,可以将其分解为:
const octet = /\d{1,3}/;
const ip = /{octet}\.{octet}\.{octet}\.{octet}/;
Run Code Online (Sandbox Code Playgroud)