String regex = "^(?:https?://)?[\\w]{1,}(?:\\.?[\\w]{1,})+[\\w-_/?&=#%:]*$";
解釋說明:
^ :表示匹配開始;
?:https?:// :表示https?有,則有://;如果沒有https?,則沒有://,它們是一對一匹配;
(?:https?://)? :表示捕獲組0個或者1個,可以沒有https:// http://;
[\\w]{1,} :表示匹配a-zA-Z0-9,可以有多個,比如www ad 123dd等多種組合;
?:\\.?[\\w]{1,} :表示匹配如果有.,則有[\\w]{1,};如果沒有.,則沒有[\\w]{1,},它們是一對一匹配;
(?:\\.?[\\w]{1,})+ :表示至少匹配一個.abc .com .cn;
[\\w-_/?&=#%:]* :表示匹配url後面的引數,包括特殊字元,可以有0個或者多個;
$ :表示匹配結束;
量詞:
量詞描述一個模式吸收輸入文字的方式.
*:前面字元或組匹配0或多個
+:前面字元或組匹配1或多個
?:前面字元或組匹配0或1個
{n}:前面字元或組的數量為n個
{n,}:前面字元或組的數量至少n個
{n,m}:前面字元或組數量至少n個,最多m個