使用Regex选择url的特定部分

select particular part of a url using Regex

本文关键字:定部 url Regex 选择 使用      更新时间:2023-09-26

假设我有一个类似/dir/name.json的url,并且我想选择并返回/dir/.json之间的任何内容,在本例中为name。所以我想出了这样的东西:

> var url = "/dir/name.json";
> var pattern = /'/'w+'./
> url.match(pattern) 
[ '/name.', index: 4, input: '/dir/name.json' ]

但我只想匹配name而不是/name.

当然,使用substr:还有另一种方法可以做到这一点

> var url = "/dir/name.json";
> url.substr(5, url.length-10)
'name'

但我想知道我是否可以使用Regex

假设点是判别式(因此它不能出现在目录名称中…)

x = (/'w+(?='.)/).exec("/dir/name.json")

可以做到。

语法(?=...)描述了一个必须匹配但不被视为"消耗字符"的子表达式,因此整个正则表达式的含义是"后面跟着一个点的单词字符的非空序列(不认为它是匹配的一部分)"。

技术名称是"积极前瞻零宽度断言"。

如果点可以出现在目录名中,那么可以工作的是:

x = (/'w+(?='.'w*$)/).exec("/dir.1/dir.2/name.json")

因为前瞻性现在希望确保在点之后只有单词字符(如果有的话),然后字符串结束。

最后,如果扩展可能完全丢失:

x = (/'w+(?='.'w*$|$)/).exec("/dir.1/dir.2/name.json")

也适用于CCD_ 9。

试试这个:

alert("/dir/name.json".match(/'/('w+)'./)[1])
alert("/dir/name.json".split("/").pop().split(".").shift())