我的网址如下......
/images/home/img/digits.png
我需要使用正则表达式或一些等价物来获取URL中的“数字”。我正在使用正则表达式,因为相同的代码将被复制,文件名将始终是不同的长度。
我尝试过使用正则表达式,然后在第一个/之后和.png之前得到所有内容,但我需要在最后一个/之前和之后的所有内容。
以下是我一直在尝试的内容:
(?<=/)(.*)(?=.png)
答案 0 :(得分:6)
"/images/home/img/digits.png".match(/\/([^\/]*)\.png/i)
返回
["/digits.png", "digits"]
答案 1 :(得分:4)
你真的很亲密。 (?<=/)([^/]*)(?=\.png$)
应该有效。
我添加的三件事情如下:
[^/]*
匹配任何不包含'/'
的字符,因此匹配不能包含任何斜杠。\
.png
阻止.
匹配任何字符。$
将其锚定在字符串的末尾。另外,如果你只是想匹配数字部分并且你不关心其余部分,你不需要[^/]*
周围的括号,因为你正在使用的前瞻和后视量词是不包括在比赛中。因此,在上述模式中,唯一将返回的内容将是[^/]*
匹配的内容。这将在隐式组0中找到,或者如果您使用.NET,则在Match.Value
中找到。
总结所有这些,我将使用的是(?<=/)[^/]*(?=\.png$)
。如果您还想匹配"/images/home/img/digits.PNG"
,还可以添加不区分大小写的标记。