简介
* 正则表达式
* 正则表达式用于描述一个字符串的格式
* 主要任务:验证一个实际字符串内容是否符合格式要求(有效性不验证)
* 比如:手机号、邮箱格式的验证
* 基本语法(不止Java有,因此只学习基本语法看懂就行)
具体用法及案例
1、[]:用来表示1个字符。[]中可以指定该字符的内容范围
*
* 例如:
* [abc]:该字符要么是a要么是b要么是c
* [a-z]:"-"表示范围,a-z:表示abcdefg.....xyz 任意小写字母
* [a-zA-Z]:任意一个字母
* [0-9]:表示任意一个数字
*
* 2:预定义字符
* \d:表示一个数字,等价与[0-9]
* \s:表示一个空白字符。空格,缩进,回车(占位但是看不见的字符)
* \w:表示一个单词字符(数字,字符,下划线) 等价于[a-zA-Z0-9_]
* .:表示任意一个字符
*
*
* 取反:
* \D:表示不是数字
* \S:表示不是空白字符
* \W:表示不是单词字符
*
* 量词:
* +:表示它前面的内容出现(1-人一次,即:一次以上)
* *:表示它前面的内容出现任意次(0-多次)
* {n}:表示它前面的内容出现n次。n是一个数字
* {n,m}:表示它前面的内容出现n-m次。(>=n&&<=m) n和m是一个数字
* {n,}:忽略m则表示n次以上(>=n)
* {0,m}:最多m次
*
*
* 例如:
* [abc]+
* 它可以匹配:
* "a" 可以
* "abcbabcbacbabcbacbabc" 可以的,字符是a或b或c,次数1次以上
* "" 不行!至少要写1个字符
* "abcd" 不行!因为其中一个字符出现了"d"
*
* [abc]*
* 它可以匹配:
* "a" 可以
* "abcbabcbacbabcbacbabc" 可以的,字符是a或b或c
* "" 可以
* "abcd" 不行!因为其中一个字符出现了"d"
*
*
* [abc]{3}
* 它可以匹配:
* "aaa" 可以
* "abc" 可以
* "aaba"或"ab" 不可以,因为次数要求只能3次
* "abd" 不可以,因为其中一个字符是"d"
*
* [abc]{3,5}
* "aaa" 可以
* "abcbc" 可以
* "aa"或"abcbcb" 不可以,次数只能在3-5次之间
* 分组:
* ():可以将其内容看作一个整体
* (X|Y):"|"表达"或"的意思 这个整体可以是X也可以是Y
* 例如:
* (abc){3}
* abcabcabc 可以:abc这个整体要出现3次
* abcabc 不行,因此次数不够
* abcabcdef 不行,次数够,但有一次的内容不是abc
*
* (abc|def){3}
* abcabcabc:可以
* abcdefabc:可以
*
*
* 边界匹配:
* ^:^出现在字符串最开始,表示字符串从这里开始
* $:$表示字符串到这里结束
*
* 例如:
* [abc]{3}
* aaaaaaaaaa 不行 实际正则表达式匹配时是通过的,因为字符串只要部分内容符合即可
*
* ^[abc]{3}
* aaadnmsduhj 可以 字符串最开始前三个字符符合正则表达式要求
*
* [abc]{3}$
* ahjsdjhaaa 可以 字符串最后的三个字符符合正则表达式要求
*
* ^[abc]{3}$
* abc 可以 正则要求字符串从头到尾只有3个字符
* abcsdasdabc 不可以的
*
*
* ^[abc]{3}.*[abc]{3}$
* abcsdasdabc 可以
*
* String提供了使用正则表达式的相关功能。
*
* 邮箱
* fan_cq123@tedu.com
* 用户名@域名.com
*
* 用户名:可以是数字,字母,_。至少写一个字符
* 域名:字母,数字。至少一个字符
* .com(后缀):.a(字母)的组合。该组合要出现一次以上
*
* 用户名@域名.com
* [a-zA-Z0-9_]+@[a-zA-Z0-9]+(\.[a-zA-Z]+)+
*/
java使用
语法
boolean matches(String regex)
使用给定的正则表达式regex来验证当前字符串是否符合格式要求
满足格式方法返回true否则返回false。
注意:正则表达式不加边界匹配符"^"和"$"也是完全匹配的效果
代码实现
String email="nihao@csdn.com";
String regex="[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";
if(email.matches(regex)){
System.out.println("是邮箱");
}else {
System.out.println("不是邮箱");
}