是否有RegExp根据条件查找和替换值,“如果搜索字符串的第一部分在目标字符串中,则替换与搜索字符串匹配的部分。”
这是一种特殊的搜索和替换,因为替换也用作搜索字符串。
例如,我有这个网址:
http://www.domain.com/path/something/more/something/
搜索以下任何部分并替换为整体:
/path/user/
因为“/ path /”在替换字符串和目标字符串中,结果将是:
http://www.domain.com/path/user/something/more/something/
注意:搜索/替换值可以是任何值。
我不知道替换和搜索字符串在我替换时是什么,所以我不能使用硬编码搜索字符串的东西。例如,这不起作用,因为该术语是硬编码的:
s.replace(/(\/path\/)/, "$1value/");
另一个例子:
这句话是“谢谢苏珊的订单。”
这是搜索和替换,“苏珊萨默斯”
这是期望的句子,“谢谢Susan Summers的订单。”
使用案例
假设您有100万个文本文档,这些文档是客户的信件,但是当他们创建文档时,他们只在客户使用全名时才使用客户名字。现在,你的工作是找到并用他们的全名替换他们的名字的每一个出现。您只能使用其全名来处理非名字。
刚刚意识到这可能无法用作RegEx并且可能需要代码。
答案 0 :(得分:0)
您可以使用:
s = 'http://www.domain.com/path/something/more/something/';
r = s.replace(/(\/path\/)/, "$user/");
//=> "http://www.domain.com/path/user/something/more/something/"
答案 1 :(得分:0)
在这种情况下,您不需要使用正则表达式:
var url = 'http://www.domain.com/path/something/more/something/';
url.replace('/path/', '/path/user/');
// => "http://www.domain.com/path/user/something/more/something/"
答案 2 :(得分:0)
split
+ join
替代方:
url = url.split('/path/').join('/path/user/');
虽然您的要求不明确,但这是一个猜测,提出了一些额外的问题:
var sub = '/path/user/';
var parts = sub.match(/[^\/]+/g);
url = url.replace(new RegExp(
'\\/(' + [parts.join('\\/')].concat(parts).join('|') + ')\\/'
), sub);
得到的正则表达式如下:
/\/(path\/user|path|user)\// // "/path/user/" OR "/path/" OR "/user/"
假设我们生活在最好的世界中,让我们检查一些网址:
'http://domain/' -> 'http://domain/'
'http://path/user/' -> 'http://path/user/'
'http://path/' -> 'http://path/user/'
'http://user/' -> 'http://path/user/'
现在,你如何看待以下几个?
'http://path/user' -> 'http://path/user/user'
'http://user/path/' -> 'http://path/user/path/'
'http://path/user/path/' -> 'http://path/user/path/'
其余问题是:
答案 3 :(得分:0)
我不太确定我是否正确理解了这个问题。以下内容将整个/ path / user替换为/ path / user /( - >第1部分:'path',第2部分:'user')的任何部分:
var url1 = "http://www.domain.com/path/something/more/something/";
var url2 = "http://www.domain.com/user/something/more/something/";
url1.replace(/\/path\/|\/user\//, '/path/user/');
url2.replace(/\/path\/|\/user\//, '/path/user/');
结果:
http://www.domain.com/path/user/something/more/something/
http://www.domain.com/path/user/something/more/something/
我希望这是你需要的,否则,请添加另一个例子。
修改强>
以下是正则表达式:http://regex101.com/r/jL6tK6