繁体   English   中英

RegEx 在 Javascript 中的字符串后获取 URL 部分

[英]RegEx to get section of URL after string in Javascript

我有以下网址:

http://data.test.com/api/v1/entity/1231

我需要获取v1//之前(斜线之间)的文本,在本例中为entity 我正在使用以下正则表达式,但我得到的是第 1 组的entity/1231

/^[^\#\?]+\/v1\/([^\?]+).*$/

关于如何摆脱1231entity之后的任何想法?

您可以使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM