簡體   English   中英

在javascript中的正則表達式中獲取最后2個/之間的字符串

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

正則表達式的格式為:(正斜線表示倒數第二個斜杠)(。*?)(正斜線表示最后一個斜杠的正斜線)。

(.*?)是斜杠之間的惰性匹配。

參考資料:

  1. 將網址中倒數第二個“ /”字符替換為“#”

  2. 正則表達式將匹配字符串中最后出現的點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM