[英]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.