我正在尝试构建URL RegExp。基本表达式如下所示:
/^(((http(?:s)?\:\/\/)|www\.)[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*\.[a-zA-Z]{2,6}(?:\/?|(?:\/[\w\-]+)*)(?:\/?|\/\w+((\.[a-zA-Z]{2,4})?)(?:\?[\w]+\=[\w\-]+)?)?(?:\&[\w]+\=[\w\-]+)*)$/
这对我来说很好,因为匹配这些:
http://gmail.com
http://www.gmail.com
www.gmail.com
但我希望修改它以符合这个:
gmail.com
我将不胜感激。
答案 0 :(得分:3)
只需添加?
即可www
可选,然后它也会匹配gmail.com
使用它:
^(((http(?:s)?\:\/\/)|www\.)?[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*\.[a-zA-Z]{2,6}(?:\/?|(?:\/[\w\-]+)*)(?:\/?|\/\w+((\.[a-zA-Z]{2,4})?)(?:\?[\w]+\=[\w\-]+)?)?(?:\&[\w]+\=[\w\-]+)*)$
或者如果您想匹配 gmail.com
而不 http://gmail.com
,请使用以下内容:
^([a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*\.[a-zA-Z]{2,6}(?:\/?|(?:\/[\w\-]+)*)(?:\/?|\/\w+((\.[a-zA-Z]{2,4})?)(?:\?[\w]+\=[\w\-]+)?)?(?:\&[\w]+\=[\w\-]+)*)$
请注意,这将匹配anu字符串,其中包含点和字母。
IMO最好使用这样的正则表达式:
^(http:\/\/|www\.)?[\w\.]+\.(com|net|co\.cc|co\.in)$
您可以根据自己的需要进行修改。
在这里查看演示并使用正则表达式:
答案 1 :(得分:2)
最简单的方法是对待' www'作为另一个子域名(因为它就是全部)。
所以:
/^(((http(?:s)?\:\/\/))?([a-zA-Z0-9\-]+\.?)+(?:\.[a-zA-Z0-9\-]+)*\.[a-zA-Z]{2,6}(?:\/?|(?:\/[\w\-]+)*)(?:\/?|\/\w+((\.[a-zA-Z]{2,4})?)(?:\?[\w]+\=[\w\-]+)?)?(?:\&[\w]+\=[\w\-]+)*)$/
编辑:作为旁注,tld(即" .com"部分)现在......非常复杂。它们很多,它们可能不适合2-6个字符。