[英]RegEx to get section of URL after string in Javascript
我有以下网址:
http://data.test.com/api/v1/entity/1231
我需要获取v1/
和/
之前(斜线之间)的文本,在本例中为entity
。 我正在使用以下正则表达式,但我得到的是第 1 组的entity/1231
:
/^[^\#\?]+\/v1\/([^\?]+).*$/
关于如何摆脱1231
或entity
之后的任何想法?
您可以使用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]);
/v1/([^/]+)
匹配:
/v1/
- 文字字符串/v1/
([^/]+)
- 捕获匹配除/
之外的一个或多个字符的组 1。由于 RegExp 定义中的构造函数符号,在 regex 模式中不需要转义正斜杠。
或者,由于 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]); }
详情:
(?<=\\/v1\\/)
- 匹配紧跟在/v1/
文本之前的位置的正向后视[^\\/]+
- 除/
字符外的一个或多个字符。尝试这个:
^[^\#\?]+\/v1\/([^\?]+).*(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/1231)$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.