我查看了大量的帖子和Google搜索结果,但我找不到答案......我有这段文字。
<p>Lorem JohnJones@xyz.com , consectetur adipisicing elit. Eos, doloribus, dolorem iusto blanditiis unde eius illum consequuntur neque dicta incidunt ullam ea hic porro optio ratione repellat</p>
我试图定位电子邮件地址然后加下划线。选择正文而不是<p>
标记非常重要。自从我通过RegexPlanet创作以来,我已经表达了我知道的作品。
到目前为止,我有这个:
var result = $("body").text();
var newResult =result.replace("\b[\w\.-]+@[\w\.-]+\.\w{2,4}\b", "REPLACED");
console.log(newResult);
但它似乎不起作用......如果您转到此Here然后点击JavaScript,您会看到input.replace()
的结果。这基本上就是我所追求的,但我也希望能够使用jQuery的.css()
功能。
我该怎么做?
答案 0 :(得分:1)
我可以通过使用html()而不是text(),更改正则表达式并将结果重新分配给正文来使其工作:
var result = $("body").html();
var newResult = result.replace(/\b[\w\.-]+@[\w\.-]+\.\w{2,4}\b/g, "REPLACED");
$("body").html(newResult);
在替换功能中使用“REPLACED”代替,可以使用函数在这样的范围内包围电子邮件:
var newResult = result.replace(/\b[\w\.-]+@[\w\.-]+\.\w{2,4}\b/g,
function (x) { return '<span class="underlined">' + x + '</span>';});
答案 1 :(得分:0)
试试这个,在正则表达式上没有引号:
var result = $("body").html();
var newResult = result.replace(/\b[\w\.-]+@[\w\.-]+\.\w{2,4}\b/ig, "REPLACED");
console.log(newResult);
//Lorem REPLACED , consectetur adipisicing elit.....
备注:强>
使用$("body").html();
代替$("body").text();
以保留html
代码
你的正则表达式很难匹配电子邮件,试图改进它。
演示: