2014-02-27 63 views
0

我想匹配頁面中的某些數字,我創建的正則表達式是/^(0 ?){1}([1-8] ?){1}(\d ?){9}$/,它在在線正則表達式測試工具中正常工作。然而,當我把它放在我的JavaScript函數出於某種原因,與^ & $匹配的正則表達式在我的代碼中不起作用。專業RegEx不工作在Jquery

var regex = /^(0 ?){1}([1-8] ?){1}(\d ?){9}$/; 
var text = $("body:first").html(); 
text = text.replace(regex, "<a href=\"tel:$&\">$&</a>"); 

$("body:first").html(text); 

Example at JSFiddle

+2

你明白爲什麼* *上粘貼URL是不可能的?因爲一個問題應該是自足的,小提琴應該是一個補充,而不是取代相關的代碼。 –

+1

順便說一句,很難得到你的問題,除了它「不工作」。 –

+0

對不起,我不知道我必須粘貼代碼...我是新來這個網站.....我會嘗試再次解釋這個問題 – ConfusedCoder

回答

1

當您使用replace正則表達式,開始和結束標記就沒有任何意義。因爲你不嘗試替換整個字符串(這是body的內容)。

變化

var regex = /^(0 ?){1}([1-8] ?){1}(\d ?){9}$/; 

var regex = /(0 ?){1}([1-8] ?){1}(\d ?){9}/; 

(或/(0 ?)([1-8] ?)(\d ?){9}/

Demonstration

如果你想確保你改變了整個細胞,你可能會找><但乾淨的解決辦法是這樣的:

var regex = /^(0 ?)([1-8] ?)(\d ?){9}$/; 
$('td').html(function(_,h){ 
    return h.replace(regex, "<a href=\"tel:$&\">$&</a>"); 
}); 

Demonstration

+0

基本上我想要做的是尋找頁面上的電話號碼,例如。 08457404400然後超鏈接它。因此根據我創建正則表達式的要求標準。但是,如果我不把^和$放在正則表達式中,它就會匹配任何數字,即使數字長度很長 – ConfusedCoder

+0

@ user3302015請參閱更新 –

+0

上述內容只適用於我需要讀取整個DOM並查找匹配號碼的單元格 – ConfusedCoder