使用以下URL正則表達式模式進行URL驗證。正則表達式在JavaScript中的URL
/[[email protected]:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[[email protected]:%_\+.~#?&//=]*)?/gi;
,但我需要排除.com
即http://google/
應該工作。
需要爲此做些什麼改變?
使用以下URL正則表達式模式進行URL驗證。正則表達式在JavaScript中的URL
/[[email protected]:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[[email protected]:%_\+.~#?&//=]*)?/gi;
,但我需要排除.com
即http://google/
應該工作。
需要爲此做些什麼改變?
只需將此部分:\.[a-z]{2,4}
替換爲(\.[a-z]{2,4})?
即可。
全正則表達式:
[[email protected]:%_\+.~#?&//=]{2,256}(\.[a-z]{2,4})?\b(\/[[email protected]:%_\+.~#?&//=]*)?
並有demo
。
實際上,我們在這裏做的是使.xxxx
可選,將其包裝在()
中並使用?
表示非貪婪狀態。
這將同時匹配:
http://www.google.com/
和
http://localhost/
警告:這是不是最有效的表達來完成你想要的東西,但它僅僅是最小的調整要求需要完成你想要的東西。
假設你想要所有的東西,包括沒有.com的url。
/[-a-z[email protected]:%_\+.~#?&//=]{2,256}
(?:\.[a-z]{2,4})? // (?:) match group this is where the .com is captured
// ? quantifier 0 to 1 times
\b(\/[[email protected]:%_\+.~#?&//=]*)?/gi
+1顯示正確的地方在哪裏。com正在捕獲。 –
您更好的用戶從jquery.validate.js擴展這個長度表達。這是經過充分測試,並支持多語言網址。 不要害怕表達式中的unicode和十六進制表達式。它只支持多語言網址。請參閱this (Unicode Characters)瞭解哪些以下的unicode意味着
/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i
你上面的表達式有很多缺陷的喜歡你的表達\b(\/[[email protected]:%_\+.~#?&//=]*)?
的最後一部分本身對整個URL匹配,並且沒有以前的表達
的任何影響,是不清楚你想要完成什麼。 – jfriend00
從括號中的第一個'。'開始放置所有內容,並附上一個問號。然後返回並修復您現有的模式,該模式目前接受':::::。zz'和'??。aa'這些有效的URL。 – nnnnnn
@ jfriend00'www.google.com'與正則表達式模式匹配,但'http:// google /'顯示不匹配錯誤。所以即時通訊尋找一個正則表達式模式,與URL'http:// google /' –