我使用以下内容在我的asset/img
路径前加上一个新字符串,在本例中为my-path
。
str.replace(/=('|")(\/?assets\/img)/g, "my-path$&");
不幸的是它在=
之前提前,所以我得到了类似的东西:
<img srcmypath="/assets/img/image.jpg">
我怎样才能在="
后得到它?我得到了:
<img src="mypath/assets/img/image.jpg">
答案 0 :(得分:1)
首先,我会按如下方式捕获/assets
:
(\/assets)
然后我将应用以下替换:
my-path$1
所以,如果我原来的句子是:
<img src="/assets/img/image.jpg">
我会得到类似的东西:
<img src="my-path/assets/img/image.jpg">
这是为我的正则表达式生成的代码regex101:
const regex = /(\/assets)/g;
const str = `<img src="/assets/img/image.jpg">`;
const subst = `my-path\$1`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
更新:如果您只想匹配那些也包含src的行,那么您可以使用以下匹配模式:
(src=")(\/assets)
这就是你要如何取代它:
$1my-path$2
答案 1 :(得分:1)
您可以使用群组在更换后引用您想要的内容。组用括号定义。
str.replace(/(=['"])(\/?assets\/img)/g, '$1mypath$2')
^^^^^ ^^^^^^^^^^^^^^ ^^ ^^- text of 2nd group
1st 2nd group |
group text of first group
将导致
<img src="mypath/assets/img/image.jpg">
答案 2 :(得分:0)
你可以先尝试一下。像
(img src=")(\/?)(assets\/img\/)(.*?)(")
然后使用捕获组进行替换,如in this regex101 example
所示
var testCases = [
'<img src="assets/img/image.jpg">',
'<img src="/assets/img/image.jpg">'
]
for(var i=0; i<testCases.length; i++)
{
console.log(testCases[i].replace(/(img src=")(\/?)(assets\/img\/)(.*?)(")/g, "$1mypath/$3$4$5"));
}
&#13;