如何检测具有字符的所有字符串,除了在正则表达式中具有某些条件的字符串

时间:2016-10-13 05:07:41

标签: jquery regex

我想检测并替换html字符串中的所有'%'及其ascii代码,但不能替换'%'位于<a>标记内的那些'%'。我无法弄清楚如何为它编写正则表达式。

the test is
<a href="%aci%">find</a>

%asd%

到目前为止,我有这样的事情:https://regex101.com/r/IwcebN/1

但它没有检测到底部的'%'...正则表达式

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

(%)(?![^<]*?>)

Explanation

编辑(更新说明):

无论在何处找到%符号,它都会立即向前看&gt;标志。但是,在寻找它时,[^&lt;]确保&lt;不来之前&gt;。如果&lt;在%之后找到它然后它不寻找&gt;了。并将%标记为正面匹配。

需要注意的是,由于javascript不支持lookbehind,因此您将不得不应用一些编程技巧以其他方式执行此操作。此外,大多数语言不支持可变长度的后面。作为%的结果,您可以看到它是否包含&gt;向前签名但无法查找&lt;使用可变长度后面的外观。因此,如果不捕获以下模式的任何%符号:

safdasdfasf % >