var testString = 'Please use "command1" to accept and "command2" to ignore';
所有我试图实现的都是替换引号之间的字符串,但在替换时,我需要知道引号内的内容。
更换后应该像:
var result = 'Please use <a href="someurl?cmd=command1">command1</a> to accept and <a href="someurl?cmd=command2">command2</a> to ignore';
我尝试了这样的事情但没有成功:
var rePattern = /\"(.*?)\"/gi;
Text.replace(rePattern, function (match, txt, urlId) {
return "rendered link for " + match;
});
答案 0 :(得分:1)
您可以使用正则表达式/"(.+?)"/g
匹配所有引用文本,并使用不带引号的命令的捕获组。然后,您可以在替换字符串中使用"$1"
。
'Please use "command1" to accept and "command2" to ignore'
.replace(/"(.+?)"/g, '<a href="someurl?cmd=$1">$1</a>');
答案 1 :(得分:1)
您应该查看有关String.prototype.replace()
的MDN文档,特别是有关Specifying a function as a parameter的部分。
var testString = 'Please use "command1" to accept and "command2" to ignore';
var reg = /"([^"]+)"/g;
var testResult = testString.replace(reg, function (match, p1) {
return '<a href="someurl?cmd=' + p1 + '">' + p1 + '</a>';
});
replace
的第一个参数是正则表达式,第二个参数是匿名函数。该函数发送了四个参数(请参阅MDN&#39; s文档),但我们只使用前两个:match
是整个匹配的字符串 - "command1"
或{{1 }和"command2"
是正则表达式中第一个捕获组的内容,p1
或command1
(不含引号)。此匿名函数返回的字符串将替换为。
答案 2 :(得分:0)
您可以使用捕获组,然后在替换中引用它。
查找
/\"([^\"]+)\"/gm
然后替换
<a href="someurl?cmd=$1">$1</a>
https://regex101.com/r/kG3iL4/1
var re = /\"([^\"]+)\"/gm;
var str = 'Please use "command1" to accept and "command2" to ignore';
var subst = '<a href="someurl?cmd=$1">$1</a>';
var result = str.replace(re, subst);