RegEx提取最后一个反斜杠和特定字符串之间的文本(javascript)

时间:2019-09-18 12:50:32

标签: javascript regex filenames

我试图在最后的正斜杠和点之间提取特定的字符串,但没有成功。我尝试了以下解决方案:R regex for everything between LAST backslash and last dot

以下是完整字符串的示例:

Unchecked assignment: 'android.util.SparseArray' to 'android.util.SparseArray<java.lang.Object>'

我要提取48494,Test,0000,Color,,,htps://url/test/testing/bb/1/dim/green.png,该值始终在最后一个斜杠和最后一个点之间。我还尝试了以下正则表达式:

"green"

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

编辑:该问题与Get Filename from URL and Strip File Extension不同,因为我正在寻找要由match方法使用的正则表达式而不是替换。

我不能使用replace,因为整个系统已准备好使用match运算符,并且不能更改,因为对于使用regex表达式和match的其他方案,已经存在许多规则。引擎使用匹配而不是替换。

1 个答案:

答案 0 :(得分:2)

您可以使用

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

请参见regex demo

详细信息

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

请注意,在JS代码中,您应该注意在RegExp构造函数和正则表达式文字内部使用反斜杠:在前者内部使用双反斜杠,在后者内部使用单反斜杠,/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(/[^\/]+(?=\.[^\/.]*$)/));