java:匹配网址的正则表达式

匹配网址正则表达式

    • 相关词语
    • 相关说明
    • 源码
    • 运行结果
    • 补充相关元字符信息
      • 正则表达式中的元字符(摘自书本)
      • 限定修饰符(摘自书本)

相关词语

regex(正则表达式) matches(匹配;比赛)

相关说明

正则表达式,可以用几个字符串分别和一个特定格式的字符串做比较,看哪几个特定格式那一类型的,哪几个不是特定格式那一类型的。邮箱的格式为 [email protected] ,对于邮箱可以表示为:\w+@\w(\.\w{2,3})*\.\w{2,3} 。邮箱的格式在书本上的例题有了,我另自己弄一弄网址那一类型的正则表达式。

源码

/*所想:
	定义网址的正则表达式
	使用正则表达式,表示将一些字符串和指定格式的字符串作比较,看这些
字符串格式是否与指定格式字符串一样。先看几个字符串知否属于网址那一类型。
网站的格式:www.A.a		a一般长度为2位或三位(cn和com一类) A可以有多次,至少一次
关键词:
	regex(正则表达式)	matches(匹配;比赛)
先收集几个网址分析:
	https://blog.csdn.net
	https://www.hao123.com
	https://image.baidu.com
	http://www.boc.cn
	http://www.ccb.com
	http://www.bhu.edu.cn
	https://www.qq.com
	http://www.sgcc.com.cn
	http://gdga.gd.gov.cn/
	https://www.163.com

	分析:	http是固定有的
			s会出现零次或一次,则表达为: (s)?
			//:也是固定的
			像www这一类一般有三个字符,这里算三次以上,表达式:	\\w{3,}
			www后面有相关的名称,如百度,字符长度至少为一次,然后整体会来多次:	(\\.\\w+)+
			最后结尾如cn、com、net,长度为2到3,同时至少会来一次:	(\\.\\w{2,}+
			完毕

			补充:\\w{2} 如:gg  \\w{4} 如:smvp
*/

class Demo{
     
	public static void main(String[] args){
     
		String str0="http(s)?://\\w{3,}(\\.\\w+)+(\\.\\w{2,3})+";//正则表达式格式
		String str1="https://blog.csdn.net";
		String str2="http://www.bhu.edu.cn";
		String str3="htt.www.bhu.edu.cn";
		if(str1.matches(str0)){
     
			System.out.println(str1+"是一个合法的网址");
		}
		else
			System.out.println(str1+"不是一个合法的网址");
		if(str2.matches(str0)){
     
			System.out.println(str2+"是一个合法的网址");
		}
		else
			System.out.println(str2+"不是一个合法的网址");
		if(str3.matches(str0)){
     
			System.out.println(str3+"是一个合法的网址");
		}
		else
			System.out.println(str3+"不是一个合法的网址");
	}
}

运行结果

java:匹配网址的正则表达式_第1张图片

补充相关元字符信息

正则表达式中的元字符(摘自书本)

元字符 正则表达式的写法 意义
. . 代表任意一个字符
\d \d 代表0~9的任意一个数字
\D \D 代表一个非数字字符
\s \s 代表空白字符,如’\t’、‘\n’
\S \S 代表非空白字符
\w \w 代表可用作标识符的字符,但不包括“$”
\W \W 代表不可用于标识的字符
\p{Lower} \p{Lower} 代表小写字母a~z
\p{Upper} \p{Upper} 代表大写字母A~Z
\p{ASCII} \P{ASCII} ASCII字符
\p{Alpha} \p{Alpha} 字母字符
\p{Digit} \p{Digit} 十进制数字,即0~9
\p{Alnum} \p{Alnum} 数字或字母字符
\p{Punct} \p{Punct} 标点符号:!”#$%^&*()等
\p{Graph} \{Graph} 可见字符:[\p{Alnum}\p{Punct}]
\p{Print} \{Print} 可打印字符:[\p{Graph}\x20]
\p{Blank} \{Blank} 空格或制表符:[\t]
\p{Cntrl} \{Cntrl} 控制字符:[\x00-\x1F\x7F]

限定修饰符(摘自书本)

限定修饰符 意义 示例
0次或1次 A?
* 0次或多次 A*
+ 一次或多次 A+
{n} 正好出现n次 A{2}
{n,} 至少出现n次 A{3,}
{n,m} 出现n次到m次 A{3,8}

你可能感兴趣的:(java浅水区,java,正则表达式,网址)