我正在尝试搜索并替换网站中的文本序列。该网页有一些文字,如&#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扩展名注入该页面。我在这里缺少什么?
答案 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>