![](/img/trans.png)
[英]How to match all characters after nth character with regex in JavaScript?
[英]Match group before nth character and after that
我想匹配第 n 个字符之前的所有内容(第一个字符除外)及其之后的所有内容。 所以对于下面的字符串
/firstname/lastname/some/cool/name
我要搭配
Group 1: firstname/lastname
Group 2: some/cool/name
使用以下正则表达式,我快到了,但我找不到正确的正则表达式来正确匹配第一组并忽略第一个 /:
([^\/]*\/){3}([^.]*)
请注意,我总是想匹配第三个正斜杠。 之后的所有字符都可以是 URL 中有效的任何字符。
您的正则表达式组没有给出正确的结果,因为([^\\/]*\\/){3}
您正在重复捕获的组,这将覆盖先前匹配的组Read this
您可以使用
^.([^/]+\/[^/]+)\/(.*)$
let str = `/firstname/lastname/some/cool/name` let op = str.match(/^.([^/]+\\/[^/]+)\\/(.*)$/) console.log(op)
量词{3}
重复捕获组 3 次,这将具有最后一次迭代的值。
第一次迭代将匹配/
,第二个firstname/
和第三个(最后一次迭代) lastname/
这将是组的值。
第二组捕获匹配[^.]*
,它将匹配 0+ 而不是不考虑数据结构的文字点。
如果要匹配完整模式,可以使用:
^\/([^\/]+\/[^\/]+)\/([^\/]+(?:\/[^\/]+)+)$
解释
^
字符串开始(
捕获组 1
[^\\/]+/[^\\/]+
匹配 2 次不是/
使用否定字符类然后是/
)
关闭群组\\/
匹配/
(
捕获组 2
[^\\/]+
匹配 1+ 次而不是/
(?:\\/[^\\/]+)+
重复 1+ 次匹配/
和 1+ 次不匹配/
以匹配字符串其余部分的模式。)
关闭群组$
字符串结尾
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.