正则表达式捕获cshtml文件中的Javascript.js

时间:2012-10-04 15:47:09

标签: javascript regex

我看了,我得到的最接近的答案是capturing filename from url without extension

所以我有这个cshtml:

<script src="@Url.Content("~/Scripts/javascript.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/javascript2.js")" type="text/javascript"></script>

我尝试使用这个正则表达式:

(?!.+[Ss]cripts+\/)\/+.+\.js

然而,使用Rad regex designer我得到了这个结果

  • /javascript.js
  • /javascript2.js

我怎样才能抓住这个

  • javascript(不带.js)
  • javascript2(没有.js)

然后我将使用替换表达式

$&.min.

得出最终结果

<script src="@Url.Content("~/Scripts/javascript2.min.js")" type="text/javascript"></script>

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

添加捕获组应该可以实现您的目标:

((?!.+[Ss]cripts+\/)\/+.+)\.js

这仍然会在开头包含/,但这应该没问题。

答案 1 :(得分:0)

只想添加以下组合:

所以我有一个带有一些脚本标签的cshtml文件:

<script src="@Url.Content("~/Scripts/javascript.js")" type="text/javascript"></script>

然后我使用正则表达式替换使用MSbuild目标:

<MSBuild.ExtensionPack.FileSystem.File TaskAction="Replace" RegexPattern="((?!.+[Ss]cripts+\/)\/+.+)\.js" Replacement="$1.min.js" Files="@(CSHTML)" />

然后就是替换表达式$1.min.js

导致取代了

<script src="@Url.Content("~/Scripts/javascript.min.js")" type="text/javascript"></script>