给出以下HTML字符串......
<a href="mylink.com">Click here to approve</a>
我需要查找并替换“点击此处批准”文字,以便HTML字符串看起来像这样......
<a href="mylink.com"><font color="green">Click here to approve</font></a>
我正在使用以下Javascript代码来完成此任务。请注意,'myHTML'实际上是一个更长的HTML字符串;我只是在这里包括相关部分。
var myHTML = '<a href="mylink.com">Click here to approve</a>';
//Change the color of the 'Approve' link to green
var approvalRegexPattern = /Click here to approve[\s\S]*?<\/a>/;
var approvalResultStr = approvalRegexPattern.exec(myHTML);
myHTML = myHTML.replace(/Click here to approve[\s\S]*?<\/a>/, '<font color="green">' + approvalResultStr + '<\/font>');
这主要是有效的,但正则表达式匹配最终包括尾随'a'标记,所以我最终得到'a'标记之外的结束'font'标记而不是内部。
<a><font color="green">Click here to approve</a></font>
如何调整我的正则表达式模式以匹配使用尾随的'a'标记,但将其从返回的字符串中排除,以便我的替换不包含它?
答案 0 :(得分:0)
你可以使用parantheses&#39;()&#39;来分割你匹配的内容,这意味着结果字符串现在是一个数组,其中元素0是整个匹配,每个后续元素是每组的parantheses你指定了。有关使用代码的示例,请参阅以下内容:
wv1 = wordvecs(word1)
wv2 = wordvecs(word2)
cosine = dot(wv1,wv2)/ (sqrt(dot(wv1,wv1))*sqrt(dot(wv2,wv2)))
输出:
var myHTML = '<a href="mylink.com">Click here to approve</a>';
//Change the color of the 'Approve' link to green
var approvalRegexPattern = /(Click here to approve[\s\S]*?)(<\/a>)/;
var approvalResultStr = approvalRegexPattern.exec(myHTML);
myHTML = myHTML.replace(/Click here to approve[\s\S]*?<\/a>/, '<font color="green">' + approvalResultStr[1] + '<\/font>' + approvalResultStr[2]);
答案 1 :(得分:0)
尝试下面的代码或许它可以帮助你。
var myHTML = '<a href="mylink.com">Click here to approve</a>';
//Change the color of the 'Approve' link to green
var approvalRegexPattern = /Click here to approve[\s\S]*?/;
var approvalResultStr = approvalRegexPattern.exec(myHTML);
myHTML = myHTML.replace(/Click here to approve[\s\S]*?<\/a>/, '<font color="green">' + approvalResultStr + '<\/font></a>');
答案 2 :(得分:0)
如果你的字符串真的只是那个,你只需要:
var myHTML = '<a href="mylink.com">Click here to approve</a>';
myHTML = myHTML.replace(/(Click here to approve[^<]*)(<\/a>)/, '<font color="green">$1</font>$2');
console.log(myHTML);
&#13;
答案 3 :(得分:0)
我知道这个问题要求修复正则表达式,但我想知道正则表达式是否是一个要求,或者只是你选择的那种“走的路”。
原因是有恕我直言的更好的方法来实现相同的,只使用简单的CSS。
我将在下面展示三种方式:按属性值,按ID和CSS类名称进行选择。请查看它是否比原始方法更容易或更好地解决您的问题。
a[href="mylink.com"] {
/* selection by attribute value */
color: green
}
#someId {
/* selection by id */
color: red
}
.makeItPurple {
/* selection by class name */
color: purple
}
<a href="mylink.com">Click here to approve</a>
<br>
<a id="someId" href="otherlink.com">Click here to approve</a>
<br>
<a class="makeItPurple" href="yetanotherlink.com">Click here to approve</a>
<br>