我有以下网址:
http://data.test.com/api/v1/entity/1231
我需要获取后面的文本v1/
和之前/
(斜线之间),在本例中为单词entity
。我正在使用以下正则表达式,但我得到的是entity/1231
第 1 组:
/^[^\#\?]+\/v1\/([^\?]+).*$/
关于如何摆脱的任何想法1231
或之后发生的任何事情entity
?
You may 将您需要的值捕获到捕获组中 with new RegExp("/v1/([^/]+)"
:
var str = "http://data.test.com/api/v1/entity/1231";
var res = str.match(new RegExp("/v1/([^/]+)"));
if (res)
console.log(res[1]);
The /v1/([^/]+)
火柴:
-
/v1/
- 文字字符串/v1/
-
([^/]+)
- 捕获组 1 匹配一个或多个字符以外的字符/
.
由于 RegExp 定义中的构造函数表示法,无需在正则表达式模式中转义正斜杠。
或者,自 ECMAScript 2018 启用 JavaScript 中的后向使用以来RegExp模式,您还可以使用基于后视的方法直接获取整个匹配所需的值:
const str = "http://data.test.com/api/v1/entity/1231";
const res = str.match(/(?<=\/v1\/)[^\/]+/);
if (res) {
console.log(res[0]);
}
Details:
-
(?<=\/v1\/)
- 与紧接其前面的位置匹配的正向后查找/v1/
text
-
[^\/]+
- 除 a 之外的一个或多个字符/
char.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)