正则表达式:
1、正则表达式就是用来晓燕某些字符串是否符合规则的,是一串特殊的字符串。特殊在其字符都是通配符,有匹配功效
2、[ ] :检查是否有括号内的字符(只能有一个括号内的字符)。
[abc] :只要有a,b,c,中的一个就行
[^abc] :除了a,b,c,之外的任意一个字符
[a-z] / [A-Z] : a~z / A-Z中的任意一个字符
[a-zA-Z0-9] : a~z,A~Z,0~9中的任意一个字符
[a-z&&[^dbc]] : a~z中除了b,c,d中的任意一个字符
预定义字符集:
. :任意一个字符
\d :任意一个数字字符,相当于[0-9]
\w :任意一个单词字符,相当于[a~zA~Z0~9]
\s :空白字符(回车,空格,tab等),相当于[\t\n\f\r\x0B]
\D :非数字字符,相当于[^0~9]
\W :非单词字符,相当于[^a~zA~Z0~9]
\S :非空白字符,相当于[^\t\n\f\r\x0B]
3、 转移字符: \
如果只写\d会判断成转译字符(无效的转译字符),要写成\\d,将"\"转译成普通的"\"
用x表示上面的正则表达式
X? 表示正则表达式中的字符出现0个到1个
X* 表示0个或多个
X+ 表示1个或多个
X{n} 表示n个X
X{n,}表示n个到任意多个
X{m,n}表示m个到n个
列:邮政编码:
1、[0-9][0-9][0-9][0-9][0-9][0-9]
2、\d\d\d\d\d\d
3、\d{6}
"^"&"$"
^\w{8,10}$ 8到10个字符从头到尾都要匹配上
():分组
()将正则表达式的部分规则进行了划分,可以使用|来进
行选择其中一组规则
reg:手机号前带有区号
+861375651674
0086 1375651674
正则表达式:
(+86|0086)?\\s?1\\d{10}
判断一个字符串是不是一个网址
http://www.baidu.com
https://www.baidu.com
www.baidu.com
www.baidu.cn
www.baidu.com.cn
www.baidu.net
www.baidu.edu
^和$
有时,我们想校验一个字符串是不是从头到尾都符合一个规则校验
此时需要在正则表达式前后添加相应的符号:
^:添加在正则表达式前,表示要校验的普通字符串的开头就
必须符合规则
$:添加在正则表达式后,表示要校验的普通字符串的末尾
必须符合规则
前后都有此符号时:考虑的普通字符串的整体
reg:
"^[\\d]{6,8}"
"123456aaaaaaaaa"可以满足上述正则表达式
"[\\d]{6,8}$"
"abc12345678" 可以满足上述正则表达式
"^[\\d]{6,8}$"
"12345678"
matchs(String regex):此方法验证不了我们自定义添加的^或$
因此当把正则表达式传入方法内后,
内部逻辑帮助添加了^和$
总结:正则表达式 是一个灵活,逻辑性强的规则校验语法。
通常用于文本中
matches方法(boolean matches(String regex))
作用:将一个字符串与正则表达式进行匹配,成功返回true,不匹配返回false
4、String的API
String[] split(String regex)
作用:可以根据指定的分隔符进行分割成字符数组
如果符合正则表达式的分隔符,在普通字符串的首位,会多出一个元素,在末尾则不会
replacAll方法(String replaceAll(String regex,String replacement))
作用:将匹配的正则表达式的字符串替换成指定的字符