正则表达式提取最后一个正斜杠和特定字符串之间的文本 (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(/[^\/]+(?=\.[^\/.]*$)/));
我试图提取最后一个正斜杠和一个点之间的特定字符串,但没有成功。我尝试了这个解决方案:
这是完整字符串的示例:
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(/[^\/]+(?=\.[^\/.]*$)/));