忽略HTML实体的正则表达式

时间:2010-02-09 12:12:41

标签: javascript regex

我需要在javascript中使用正则表达式来执行以下操作。

那些不属于HTML实体的 a 实例应替换为 w

前:

abc should change to wbc

aabacaa should change to wwbwcww

&abcaa& should change to &wbcww&  

等等。

我正在使用JavaScript。

感谢任何帮助。

3 个答案:

答案 0 :(得分:6)

试试这个:

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

答案 1 :(得分:0)

一种非正则表达方式,用你最喜欢的编程语言,将你的字符串拆分为“& a”(或&),替换拆分的项目,然后加入回来,例如用Python

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

答案 2 :(得分:-1)

作为一个更一般的答案,在编写正则表达式时,我要做的第一件事是转到http://rubular.com并列出几个测试字符串。然后我编写并重新处理正则表达式,直到它完成我需要的工作。

是的,我知道Rubular是一个Ruby正则表达式网站,但RegExp语法非常相似,如果不是大多数语言相同(我认为Perl使用扩展语法)。我已成功使用Rubular来测试Java RegExps。