在html中搜索并替换文本序列

时间:2015-06-13 16:56:21

标签: javascript jquery html regex

我正在尝试搜索并替换网站中的文本序列。该网页有一些文字,如&#34;#45421&#34; (#后跟5位数字)。我需要用<a href="http://example.com/45421">#45421</a>替换它。我尝试了以下代码来执行此操作,

var mystring = $('.content').html();
var re = /\b\#d{5}\b/g;
mystring.replace(re, "<a href='http://example.com/'"+re+">"+re+"</a>");

但我无法得到理想的结果。我希望在执行此脚本后立即将文本序列替换为链接。该脚本实际上是从chrome扩展名注入该页面。我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

您需要使用正则表达式捕获组 - 将括号放在要捕获的正则表达式的一部分周围,然后在替换字符串中将其引用为var regex = NSRegularExpression(pattern: "<!--[^<]*-->", options: NSRegularExpressionOptions.CaseInsensitive, error: nil)! str = regex.stringByReplacingMatchesInString(str, options: nil, range: NSMakeRange(0, count(str)), withTemplate: "") (并且,如果您正在捕获多个,下一个是$1,依此类推):

$2

你的正则表达式也有一个错误的转义反斜杠 - mystring.replace(/#(\d{5})\b/g, '<a href="http://example.com/$1">#$1</a>'); 应该被转义,而不是d

答案 1 :(得分:0)

不知道这是否是你想要的

 <!DOCTYPE html>

    <head>
      <meta charset="utf-8">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
      <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
      <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
      <style>
      </style>
    </head>
    <body>

      <script>
      var mystring = "#45421"
      var re = mystring.match(/#\d{5}/g);
      var re1 = re.toString().replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');
      var strReplace =mystring.replace(/#\d{5}/g, "<a href='http://example.com/"+re1+"'"+">"+re+"</a>");

      console.log(strReplace);
      </script>

    </body>
    </html>