如果我是正確的,下面的代碼將只匹配一個完全按照呈現的URL。如何識別包含(域)子字符串的所有URL?
然而,那會是什麼樣子,如果你想找出子域,以及含有各種不同的查詢字符串的URL - 換句話說,包含此域中的任何地址:
var url = /test.com/
if (window.location.href.match(url)){
alert("match!");
}
如果我是正確的,下面的代碼將只匹配一個完全按照呈現的URL。如何識別包含(域)子字符串的所有URL?
然而,那會是什麼樣子,如果你想找出子域,以及含有各種不同的查詢字符串的URL - 換句話說,包含此域中的任何地址:
var url = /test.com/
if (window.location.href.match(url)){
alert("match!");
}
不,你的模式將實際上匹配所有包含test.com
的字符串。
常規expresssion /test.com/
說,在串
最好使用example.com例如鏈接的任何地方匹配test[ANY CHARACTER]com
。所以我用例子替換測試。
一些示例的比賽可能是
http://example.com
http://examplexcom.xyz
http://example!com.xyz
http://example.com?q=123
http://sub.example.com
http://fooexample.com
http://example.com/asdf/123
http://stackoverflow.com/?site=example.com
我認爲你需要使用/g
。/g啓用「全局」匹配。當使用replace()方法,指定此修飾符可替換所有匹配,而不是隻有第一個:
var /test.com/g;
如果你想測試一個URL是有效的,這是我使用的一個。相當複雜,因爲它需要照顧也是數字域&的其他幾個特點:
var urlMatcher = /(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)[email protected])?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?/;
照顧的參數和主持人等......不要問我解釋細節請。