[英]Get the string between the last 2 / in regex in javascript
如何在javascript中的正則表達式中獲取最后兩個斜杠之間的字符串? 例如:
stackoverflow.com/questions/ask/index.html => "ask"
http://regexr.com/foo.html?q=bar => "regexr.com"
https://www.w3schools.com/icons/default.asp => "icons"
您可以使用/\\/([^/]+)\\/[^/]*$/
; [^/]*$
匹配最后一個斜杠之后的所有內容, \\/([^/]+)\\/
匹配最后兩個斜杠,然后您可以捕獲中間的內容並將其提取:
var samples = ["stackoverflow.com/questions/ask/index.html", "http://regexr.com/foo.html?q=bar", "https://www.w3schools.com/icons/default.asp"] console.log( samples.map(s => s.match(/\\/([^/]+)\\/[^/]*$/)[1]) )
您可以使用split()
解決此問題。
let a = 'stackoverflow.com/questions/ask/index.html';
let b = 'http://regexr.com/foo.html?q=bar';
let c = 'https://www.w3schools.com/icons/default.asp';
a = a.split('/')
b = b.split('/')
c = c.split('/')
split()之后建立索引
console.log(a[a.length-2])
console.log(b[b.length-2])
console.log(c[c.length-2])
我個人不建議使用正則表達式。 因為很難維護
我相信這樣做:
[^\\/]+(?=\\/[^\\/]*$)
[^\\/]+
匹配/
以外的所有字符。 將其(?=\\/[^\\/]*$)
放入序列中會查找最后一個/
之前的模式。
var urls = [ "stackoverflow.com/questions/ask/index.html", "http://regexr.com/foo.html?q=bar", "https://www.w3schools.com/icons/default.asp" ]; urls.forEach(url => console.log(url.match(/[^\\/]+(?=\\/[^\\/]*$)/)[0]));
您可以使用(?=[^/]*\\/[^/]*$)(.*?)(?=\\/[^/]*$)
。 您可以在這里進行測試: https : //www.regexpal.com/
正則表達式的格式為:(正斜線表示倒數第二個斜杠)(。*?)(正斜線表示最后一個斜杠的正斜線)。
(.*?)
是斜杠之間的惰性匹配。
參考資料:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.