2015-09-27 70 views
0

我看了很多堆棧文章和谷歌搜索結果,但我無法完全找到我的答案......我有這段文字。如何選擇文本並使用正則表達式通過jQuery替換它?

<p>Lorem [email protected] , 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\.-][email protected][\w\.-]+\.\w{2,4}\b", "REPLACED"); 
console.log(newResult); 

但它似乎沒有工作......如果你去這個Here,然後單擊JavaScript中,你會看到input.replace()結果。這基本上就是我所追求的,但我也希望能夠使用jQuery的.css()函數。

我該怎麼做?

+0

請問你需要使用'.css'發揮作用? – Sgnl

+2

當您讀取文本並進行更改時,它不會自動映射回元素。您需要設置HTML返回。通過使用'text()',你將從頁面中去除所有的HTML。 – epascarello

回答

1

我可以使它使用HTML(),而不是文本(),改變正則表達式和重新分配的結果身體工作:

var result = $("body").html(); 
var newResult = result.replace(/\b[\w\.-][email protected][\w\.-]+\.\w{2,4}\b/g, "REPLACED"); 
$("body").html(newResult); 

相反,你可以使用替換功能使用「替換爲」中函數包圍的電子郵件這樣的跨度內:

var newResult = result.replace(/\b[\w\.-][email protected][\w\.-]+\.\w{2,4}\b/g, 
    function (x) { return '<span class="underlined">' + x + '</span>';}); 
+0

我該如何編輯我的表達式來執行它現在所做的事情,同時也要確保電子郵件的域總是「@ xyz.com」?如果電子郵件地址不包含「@ xyz.com」,那麼它會簡單地忽略它? – ProEvilz

+1

/\b[\w\.-][email protected]\b/g –

0

試試這個,不帶引號的正則表達式:

var result = $("body").html(); 
var newResult = result.replace(/\b[\w\.-][email protected][\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

+0

我怎樣才能編輯我的表達來做它現在做的事情,但也要確保電子郵件的域總是'@xyz.com '比如?如果電子郵件地址不包含「@ xyz.com」,那麼它會簡單地忽略它? – ProEvilz