我想匹配的URL使用正則表達式嘗試使用正則表達式
https?:\/\/.*\..*
但無法瞭解如何在網址後,會出現一個空格結束比賽,以匹配URL。
例如在下面的圖片中,對於最後的匹配,我希望它在結束之前結束。 但似乎沒有工作。
您還可以解釋爲什麼在末尾添加\ b(單詞邊界)不起作用嗎?
我想匹配的URL使用正則表達式嘗試使用正則表達式
https?:\/\/.*\..*
但無法瞭解如何在網址後,會出現一個空格結束比賽,以匹配URL。
例如在下面的圖片中,對於最後的匹配,我希望它在結束之前結束。 但似乎沒有工作。
您還可以解釋爲什麼在末尾添加\ b(單詞邊界)不起作用嗎?
看看下面用懶惰和非捕獲組的最後一個空白的解決方案:
在這裏尋找更好的正則表達式」 What is the best regular expression to check if a string is a valid URL?
//well let us dive into this:
var matches = document.querySelector("pre").textContent.match(/https?:\/\/.*\..*/g);
console.log(matches);
/*
your regex does the following
search for http:// or https://
then you want to search for every character that is not a newline until you find a dot
after that you simply search for everything that is not a newline.
you need lazy and a non-capturing group, lazy is ? - (?=\s)
*/
var matches2 = document.querySelector("pre").textContent.match(/https?:\/\/.+?\..+?(?=\s)/g);
console.log(matches2);
<pre>
[email protected]
http://foo.co.uk/
http://regexr.com/foo.html?q=bard
https://mediatemple.net jhjhjhjhjhjh
</pre>
能否請您解釋一下爲什麼\ b沒有按不工作? –
因爲'\ b'在一個單詞boundery上停了下來,'.'就是這樣一個boundery。 – Mouser
是不是空間被視爲字邊界? –
只需使用\S
:
https?:\/\/.*\.\S*
\S
表示:匹配的一切,是不是空間字符(空格,製表符delim ..)
你能解釋爲什麼\ b不能工作? –
https://www.regexpal.com/94502 – jmargolisvt