如何选择文本并使用regex通过jQuery替换它?

时间:2015-09-27 01:01:22

标签: javascript jquery html regex

我查看了大量的帖子和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()功能。

我该怎么做?

2 个答案:

答案 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代码 你的正则表达式很难匹配电子邮件,试图改进它。

演示:

http://codepen.io/anon/pen/epBvxG