正则表达式提取最后一个正斜杠和特定字符串之间的文本 (javascript)

RegEx to extract text between last forwardslash and specific string (javascript)

我试图提取最后一个正斜杠和一个点之间的特定字符串,但没有成功。我尝试了这个解决方案:

这是完整字符串的示例:

48494,测试,0000,颜色,htps://url/test/testing/bb/1/dim/<strong>绿色</strong>.png

我想提取 "green",它总是在最后一个斜杠和最后一个点之间。我还尝试了以下正则表达式:

([^\/]+$)

但是这个在反斜杠后选择 所有内容。我想删除最后一个点之后的所有内容,以便只选择颜色。

编辑:这个问题与不同,因为我正在寻找一个正则表达式来使用匹配方法而不是替换。

我不能使用替换,因为整个系统都准备使用匹配运算符并且无法更改,因为其他使用带匹配的正则表达式的场景已经存在很多规则。引擎使用匹配,而不是替换。

您可以使用

/[^\/]+(?=\.[^\/.]*$)/

参见regex demo

详情

  • [^\/]+ - /
  • 以外的 1+ 个字符
  • (?=\.[^\/.]*$) - 正向前瞻需要 .,然后是 ./ 以外的 0+ 个字符到字符串的末尾,紧接在当前位置。由于前瞻是零宽度断言,与前瞻匹配的文本不会添加到整体匹配中。

注意在JS代码中,注意在RegExp构造函数和regex字面量中使用反斜杠:前者使用双反斜杠,后者使用单反斜杠,/a\/b\d/ = new RegExp("a/b\d") (斜杠不是特殊的正则表达式元字符,不需要转义)。

JS 演示:

var s = "48494,Test,0000,Color,,,htps://url/test/testing/bb/1/dim/green.png";

console.log(s.match(new RegExp("[^/]+(?=\.[^/.]*$)")));
console.log(s.match(/[^\/]+(?=\.[^\/.]*$)/));