2010-02-09 47 views
1

我需要JavaScript中的正則表達式,它執行以下操作。忽略HTML實體的正則表達式

那些不是HTML實體部分的a的實例應替換爲w

例:

abc should change to wbc 

aabacaa should change to wwbwcww 

&abcaa& should change to &wbcww& 

等。

我正在使用JavaScript。

任何幫助表示讚賞。

+0

你是否需要考慮所有HTML實體(如'¶')?或者只是'&'。如果你需要考慮所有問題,我的答案是不正確的(我會刪除它)。 – 2010-02-09 12:21:18

+0

你想用什麼工具? – Vijay 2010-02-09 12:23:57

回答

6

試試這個:

"&abcaa&".replace(/&[^;]+;|a/g, function($0) { 
    return $0 === "a" ? "w" : $0; 
}) 
+0

整潔!我真的應該學習JavaScript。 – 2010-02-09 12:26:02

+0

這不會將& b轉換爲w & b – Varun 2010-02-09 12:54:42

+0

@Varun:是的。 – 2010-02-09 13:03:10

0

非正則表達式的方式,在您最喜愛的編程語言,分割你的字符串「&一」(或&),更換分裂的項目,然後再加入回如在Python

>>> s="&abcaa&" 
>>> '&a'.join([ i.replace("a","w") for i in s.split("&a") ]) 
'&wbcww&' 
-1

作爲一個更普遍的答案,寫正則表達式時,我做的第一件事就是去http://rubular.com打下了幾個測試的字符串。然後,我編寫並重新編寫正則表達式,直到它滿足需要。

是的,我知道Rubular是一個Ruby regex站點,但是對於大多數語言(我認爲Perl使用擴展語法),RegExp語法非常相似。我已成功使用Rubular來測試Java RegExps。