Java基础回顾 : 正则表达式

利用正则表达式可以方便的帮助用户进行数据的验证、拆分、替换等功能.

如果要想正确的驱动正则的操作,那么主要依靠String 类之中的方法:

① . · 验证正则 : 字符串是否匹配给定的正则表达式
public boolean matches(String regex)
② . · 替换 : 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
public String replaceAll(String regex,String replacement)
③ . · 字符串拆分 : 根据给定正则表达式的匹配拆分此字符串。
public String[] split(String regex)


正则表达式 :

如果要想表示数字可以使用“\d”的标记,同时也可以写成“[0-9]”

预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
· [abc]:表示可能是a、b、c 中的一个;
· [^abc]:表示不是a、b、c 中的一个;
· [a-zA-Z]:表示所有的字母,包括大小写;
· [^a-zA-Z]:表示所有的非字母

· ?:表示正则出现0 次、1 次;
· *:表示正则出现0 次、1 次、多次;
· +:表示正则出现1 次或多次;
· {n}:表示正则出现正好n 次;
· {n,}:表示正则出现n 次以上;
· {n,m}:表示正则出现n~m 次。


范例:现在用户名要求由字母、数字、_所组成,并且长度在6~15 位之间。

public class TestDemo {
	public static void main(String[] args) {
		String str = "hello123";
		String regex = "\\w{6,15}"; // [a-zA-Z0-9_]{6,15}
		System.out.println(str.matches(regex));
	}
}
对于本程序正则的编写原则:
· 设置字符的取值范围:[a-zA-Z0-9_];
· 设置固定的长度比较可以使用“{}”;
· 正则之中提供了简化的符号:\w


范例:验证电话号码
现在有以下几种电话号码格式:
· 51283346
· 010-51283346
那么要求编写一个正则可以同时满足以上两种电话格式的要求。

public class TestDemo {
	public static void main(String[] args) {
		String str = "010-51283346";
		String regex = "(\\d{3,4}-)?\\d{7,8}";
		System.out.println(str.matches(regex));
	}
}
· 对电话号码而言,只要是7 位或8 位都可以;  \\d{7,8}
· 区号和号码中的-应该同时出现,如果要将多个正则设置为一组,那么使用“()”表示。


范例:验证email 地址
一般而言,email 地址的组成:
· 用户名为字母、数字、.
· 域名为字母、数字、-、_所组成;
· 后缀必须是:.com、.cn、.com.cn、.net、org、edu。
· 字母、数字、.的组合没有现成的简化符号:[a-zA-Z0-9\\.]+
· @标记应该原样输出;
· 域名为字母、数字、-、_所组成:[a-zA-Z0-9\\-_]+
· 后缀必须是:.com、.cn、.com.cn、.net、org、edu

public class TestDemo {
	public static void main(String[] args) {
		String str = "[email protected]";
		String regex = "[a-zA-Z0-9\\.]+@[a-zA-Z0-9\\-_]+\\.(com|net|com\\.cn|org|edu";
		System.out.println(str.matches(regex));
	}
}



猜你喜欢

转载自blog.csdn.net/sinat_18882775/article/details/51520183
今日推荐