一、正则表达式:
正则表达式:它用一些特殊的字符来描述一个文本的格式。我们可以通过正则表达式验证一个字符串是否符合格式要求。但是它并不能验证字符串内容是否正确。
正则表达式关键字:
[]代表可以出现一个字符,一般里面会列举具体出现的内容。
[a],这个时候[]可以省略,表示出现一次a
[abc],表示这个字符可以是a或b或c
[^abc],表示此处是a、b、c以外的其他字符
[a-z],表示此处可以是a到z的字符,注意范围必须从小到大。
[a-zA-Z0-9],表示此处可以是字母或数字,字母不区分大小写。
[a-z&&[^bc]],表示除b、c以外的小写字母
. : 代表任意一个字符
\d:代表任意一个数字[0-9]
\D:不能是数字的任意字符[^0-9]
\s:任意一个空白字符(space table)
\S:非空白的字符。
\w:单词字符,只能是数字字母下划线[0-9a-zA-Z_]
\W:非单词字符[^\w]
量词:约束左边一个字符描述。
?:表示0或1次。[\w]? :任意一个0个单词字符。[\w][\w]?:表示1或2个单词字符。
*:表示0或多次。
+:至少一次。
{n}:n次,n只能是数字。 [\d]{11},11次数字
{n,}:n次以上。
{n,m}:n到m次。
():将内容看做一个整体,(abcd)表示出现一个abcd. ()中可以使用或关系,在几个整体中选其一。(138|135|136),138或135或136
对于正则表达式的关键字,如果要使用其本身的含义,需要在其前面加\转义。
public class RexString {
public static void main(String[] args){
String str = "\"\""; //""在java中有特殊含义,需要用\将其转义,这里实际上就是str存储的是""字符串。
/**
* w在java中没有特殊含义,所以不需要转义,这个时候你用\w就会出现错误。所以想描述\w需将转义字符转换为普通的\使用,
* 所以在\前面加上一个\将其变成一个普通字符,这样java就可以正确描述\w了。 *
*/
//String rex = "[0-9a-zA-Z]+@[\w]+.com";// \w与java中的转移字符发生冲突,需要将\转移
String rex = "[0-9a-zA-Z]+@[\\w]+\\.com";//邮箱正则表达式 .com
String PhoneRex = "(\\+86|0086)?\\d{11}";
String noRex = "\\d{15}(\\d{2}[0-9xX])?";
System.out.println(rex); \\[0-9a-zA-Z]+@[\w]+\.com
String mail = "fan-chuanqi@q.com";
/**
* 字符串match(String rex)方法,使用给定的正则表达式来验证当前字符串的格式,若格式符合返回true
*
*/
boolean check = mail.matches(rex);
System.out.println(check?"合法":"不合法");
}
}