我想检测并替换html字符串中的所有'%'及其ascii代码,但不能替换'%'位于<a>
标记内的那些'%'。我无法弄清楚如何为它编写正则表达式。
the test is
<a href="%aci%">find</a>
%asd%
到目前为止,我有这样的事情:https://regex101.com/r/IwcebN/1
但它没有检测到底部的'%'...正则表达式
答案 0 :(得分:1)
你可以试试这个:
(%)(?![^<]*?>)
无论在何处找到%符号,它都会立即向前看&gt;标志。但是,在寻找它时,[^&lt;]确保&lt;不来之前&gt;。如果&lt;在%之后找到它然后它不寻找&gt;了。并将%标记为正面匹配。
需要注意的是,由于javascript不支持lookbehind,因此您将不得不应用一些编程技巧以其他方式执行此操作。此外,大多数语言不支持可变长度的后面。作为%的结果,您可以看到它是否包含&gt;向前签名但无法查找&lt;使用可变长度后面的外观。因此,如果不捕获以下模式的任何%符号:
safdasdfasf % >