[英]Regex to get first word after third slash but before minus symbol
这是我必须处理的 URL 之一...
https://www.some-domain.de/city/123/street-firstname-lastname
我需要使用 JS上街。 域保持不变,城市保持不变,但数字123可能会有所不同。
到目前为止,我设法获得了一些其他价值,但完全不知道如何获得街道。 任何帮助表示赞赏。
我建议使用一些现有的库(像这样? )来解析 url 并隔离路径。 然后在'/'
上拆分以获取路径段(或者您使用的 url-parser 可能会有一个选项)。 一旦你有了你想要的单个路径段,你可以在'-'
上拆分,或者使用正则表达式,无论哪个。
这样做的好处不仅在于您不必自己编写大型复杂的正则表达式,它还将释放您对输入数据的许多假设并提供更可靠的解决方案。
var citynumber = document.location.href.split('/')[4];
var address = document.location.href.split('/')[5];
var street= address.split('-')[0]
在@ShapeOfMatter 的帮助下找到它。 我刚刚选择了最后一个斜线之后的所有内容,这次使用“-”而不是“/”将其拆分,然后选择了第一个单词。 非常感谢。
以下正则表达式验证 url 模式并捕获街道名称...
/^https*:\/\/(?:[^\/]+\/){3}([^-]+)/
它读...
^https*:\/\/
... 从头开始匹配协议http://
或https://
(?:[^\/]+\/){3}
...匹配以下模式...
[^\/]+\/
... 任何不是斜杠的字符序列,后跟斜杠。(?: ... )
{3}
。([^-]+)
... 捕获任何不是减号/破折号的字符序列,即街道名称。 const regXCaptureStreet = (/^https*:\/\/(?:[^\/]+\/){3}([^-]+)/gm); const sampleText = `https://some-domain.de/city/123/street-firstname-lastname //foo/bar/baz/biz/ http://example.org/the-city/987654/mystreetname-myfirstname-mylastname //foo/bar/baz/biz/ https://some-domain.de/city/123/streetname-firstname-lastname //foo/bar/baz/biz/ http://example.org/the-city/987654/nameofstreet-myfirstname-mylastname`; console.log( [...sampleText.matchAll(regXCaptureStreet)].map(result => result[1]) )
.as-console-wrapper { min-height: 100%;important: top; 0; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.