正则表达式-排除并包含一些单词

时间:2021-02-11 19:01:12

标签: regex

我有多个具有此类导入的文件:

<link rel="stylesheet" href="../vendor/pickadate/lib/themes/default.css">
<link rel="stylesheet" href="../external/default.date.css">
<script type="text/javascript" src="scheduleCtrl_Helper_5.js"></script>
 <script type="text/javascript" src="agenda_Helper.js"></script>

我想找到所有以 .js 结尾但不以 _5.js(5 或任意数字)结尾的导入

并忽略来自供应商和外部的导入。

我有这个似乎工作正常的正则表达式:

^(?!.外部).[^\d].js".*$

所以它不包括包含外部的导入和那些以 number.js

结尾的导入

但是如何添加多个排除词? 类似:

^(?!.external|vendor).[^\d].js".*$

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

你可以使用

\b(?:src|href)="((?![^"]*(?:external|vendor))[^"]*[^"\d]\.js)"

参见regex demo

详情

  • \b - 一个词边界
  • (?:src|href) - srchref
  • =" - =" 字符串
  • ((?![^"]*(?:external|vendor))[^"]*[^"\d]\.js) - 第 1 组:
    • (?![^"]*(?:external|vendor)) - 如果有零个或多个字符而不是尽可能多的 " 后跟 externalvendor
    • [^"]* - 除 " 之外的零个或多个字符
    • [^"\d] - 除 " 和数字以外的字符
    • \.js - .js 子字符串
  • " - 一个 " 字符。