2014-12-03 163 views
0

我的源文件here 包含HTML代碼,我想在我的應用程序中將電話號碼更改爲可點擊。 我要尋找一個正則表達式的字符串>number<轉換爲><a href="tel:number">number</a><轉換字符串「><" Into "><a href="tel:number">number</a><」

簡單/ \ d /正則表達式不會工作,因爲那裏是HTML代碼,如style="color: #333333;

請幫助。謝謝。

+2

你應該閱讀[此帖](HTTP: //blog.codinghorror.com/parsing-html-the-cthulhu-way/)。 – DontVoteMeDown 2014-12-03 17:58:36

+1

@DontVoteMeDown也許你還應該參考這個:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – 2014-12-03 18:30:49

回答

2

這是最簡單的回答,我可以想出:

html=html.replace(/>(\d+)<\//g,'><a href="tel:$1">$1</a></'); 

這是未經測試的代碼,並不能保證工作(現在)。

但應該足夠了。

+0

謝謝!輕微編輯'HTML = html.replace(/>(\ d +)<\//g,'>$1 Iyas 2014-12-03 18:19:33

+0

@lyas,​​將工作過,但我離開'「>'故意位。如果你檢查代碼,你會看到的電話號碼被包裹在裏面'的你的電話號碼'',比''>'更容易找到'>'。我並不反對你的建議,我只是更喜歡這種方式來安全一點。 – 2014-12-03 18:23:10

+0

是的,但它將排除代碼中存在的

號碼

。非常感謝!你節省了我的時間。願上帝保佑你。 – Iyas 2014-12-03 18:25:59

1

我認爲你在尋找這樣的事情正則表達式:

(.*>)([0-9]+)(<.*) 

然後你用這個替代它:

$1<a href="tel:$2">$2</a>$3 
+1

這段代碼在示例代碼中使用時會很笨拙。如果它不會導致瀏覽器內存不足,我會感到驚訝。你可以安全地用'\ d +'替換'[0-9] +'。 +1的努力。 – 2014-12-03 18:18:43

+0

我錯過了這個問題正在尋找一個特定於js的解決方案。這是爲了傳達概念上的正則表達式。伊斯梅爾,你的解決方案正是我所建議的js替代方案。當然\ d也適用於數字...我有時更喜歡更冗長的語法,因爲我覺得它更具可讀性。太多的轉義字符會讓我的頭部爆炸。 :) – BrianV 2014-12-03 20:20:13

+0

我同意你的看法。在這種情況下,它只有1次逃生,可讀性不會受到傷害。由於OP正試圖從中學習,所以你的例子教會更好一點。關於是否是JavaScript,我仍然認爲這將是一個豬,但你的解決方案是非常接近我的(我看不到任何其他「正確的」答案)。不要刪除這個答案,只需添加一個說明,解釋你在一般情況下的解釋。(我已經提高了你的水平,不能做的比這更多。) – 2014-12-03 20:24:42

相關問題