2

我有一个打印 div 的 Greasemonkey 脚本——有效!但是,我希望能够在此 div 中的所有日期中添加粗体标签。

日期格式为 MM/DD/YYYY

所以像:

var regex = '\d{2}\/\d{2}\/\d{4}';

那么我将如何执行搜索替换?如果 div 被调用loanTable

非工作概念:

$("#loanTable").html().replace( regex, "<b>" regex "</b>" )

像上面这样的东西应该可以工作,但我不确定它的确切语法。

4

4 回答 4

2

使用正则表达式捕获组

var loanTable   = $("#loanTable")
var loanHTML    = loanTable.html ().replace (/(\d{2}\/\d{2}\/\d{4})/g, "<b>$1</b>");
loanTable.html (loanHTML);
于 2012-05-08T23:37:12.590 回答
1

这段代码不是有效的 JS:

var regex = '\d{2}\/\d{2}\/\d{4}';
$("#loanTable").html().replace( regex, "<b>" regex "</b>" )

正则表达式的语法是/regex/,不带引号或new Regex('regex')带引号。

首先将 html 分配给一个变量。也<b>几乎不再使用了,<strong>是新标准。然后,replace()将正则表达式和字符串或函数作为参数。要多次替换,您必须使用该g标志。最后,要做你想做的事,你可以使用替换令牌,比如$1等等......

var re = /\d{2}\/\d{2}\/\d{4}/g; // 'g' flag for 'global';
var html = $("#loanTable").html();

$("#loanTable").html(html.replace(re, '<strong>$&</strong>')); // The `$&` token returns the whole match
于 2012-05-08T23:38:41.490 回答
1

上次我使用 GreaseMonkey 时,让 jQuery 在您的用户脚本中运行并不容易。

使用以下代码在没有 jQuery 的情况下执行此操作:

var loanTable = document.getElementById('loanTable');
loanTable.innerHTML = loanTable.innerHTML.replace(/(\d{1,2}\/\d{1,2}\/\d{4})/g, "<b>$1</b>");
于 2012-05-09T00:12:34.203 回答
0

这其中的一个小方面:您需要使用+运算符连接字符串:

$("#loanTable").html().replace( regex, "<b>" + regex + "</b>" )
于 2012-05-08T23:41:03.707 回答