【问题标题】:How do I replace a specific URL in a "href" attribute using a regular expression?如何使用正则表达式替换“href”属性中的特定 URL?
【发布时间】:2019-10-24 20:07:00
【问题描述】:

我只想使用正则表达式替换具有单个前导正斜杠 (/) 的 href URL。

这是我的字符串:

var p = '<link href="/example.com"/> <link href="//example2.com"/>';

这是我的代码,但它与两个元素的 href 属性匹配。

var p = '<link href="/example.com"/> <link href="//example2.com"/>';
var re = /href="\//gi;
var newstr = p.replace(re, 'href="/baseurl/');

【问题讨论】:

    标签: javascript html regex replace href


    【解决方案1】:

    尝试改用这个:

    const links = `
      <a href="/example.com">Example</a>
      <a href='//example.com'>Example</a>
    `;
    
    const re = /href=(["']{1})\/{1}([^\/])/gi;
    
    console.log(links.replace(re, 'href=$1/baseurl/$2'));

    祝你好运。

    【讨论】:

    • 谢谢,但您的正则表达式也会替换字符串,例如 'Example'。我希望它跳过所有以 // 开头的 href url
    • @Emz 正则表达式的以下部分:\/{1} 专门将正斜杠 (/) 的数量限制为一个。
    • 只需将像这样的另一个字符串 'Example' 添加到常量链接并运行代码。您会看到它也将被替换为此 'Example/
    • @Emz 我发现了问题并更新了我的答案。该解决方案在 sn-p 中有效,尝试一下,如果失败,请告诉我。
    【解决方案2】:

    var p = '<link href="/example.com"/> <link href="//example2.com"/>';
    var re = /href="\/([A-z0-9])/gi;
    var newstr = p.replace(re, 'href="/baseurl/$1');
    console.log(newstr);

    这将只替换单个斜杠 url,如果有多个这样的 url 也将被替换

    【讨论】:

    • 它也在替换第一个字母。即它正在从单词 example 中删除字母 E。
    • @Emz 我现在已经解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2011-07-09
    • 2014-12-30
    • 2022-12-11
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    相关资源
    最近更新 更多