改进JS正则表达式以排除包含特定字符串的行

时间:2019-05-03 16:38:46

标签: regex

我有一个JS正则表达式来替换在p标签内包含img标签的字符串部分。我要捡那些我不想要的东西。

我要查找和替换的示例(src和类并非总是相同的顺序,而imageData并不总是相同的base64“数字”,因此我不能仅对整个字符串进行匹配):< / p>


<p><img class="classIWantToMatch" src="data:image/gif;base64,dataForImage"></p>
<p><img src="data:image/gif;base64,imageData" class="classIWantToMatch" ></p>

也可以找到并替换的样本(但我不想这么做):

<p><img src="/myFiles/my.PNG" alt=""></p>

正则表达式:

/(<p><img).*?(class="classIWantToMatch").*?(<\/p>)/g

我正在尝试先行后顾,但似乎无法使其达到我想要的效果。

除了老式的谷歌搜索,我还在这里尝试过:

A Regex that search for lines that contains a string, and not contains another string

Using Regex to find string that contains one string and excludes a second string?

以及其他几个。我想我只是不明白向前/向后。

1 个答案:

答案 0 :(得分:0)

This RegEx可能会帮助您仅获得所需的目标或设计一个表达式来实现:

(<p><img.+class=\")(classIWantToMatch)(\".+<\/p>) 

enter image description here

  • 您只能将所需目标限制在第二个捕获组中。
  • 使用简单的左边界为(<p><img.+class=\")和右边界为(\".+<\/p>),您可能会这样做。但是,为了安全起见,您可能会考虑对这些边界进行更严格的限制。例如,.+可以非常限于一个字符列表。