正则表达式
来源:互联网 发布:淘宝宝贝价格下调 编辑:程序博客网 时间:2024/06/10 20:08
正则表达式也就是编程里面的一块字符串模板,也可以说是编程里面的规定的一套固定规则语法的表达式。
正则表达式的通配符(元字符):
. :可以代表一个任意字符
\d :代表一个任意数字。0\1\2\3....9 digital
\D :代表一个任意非数字。0\1\2\3....9
\w :代表一个任意单词字符。 26个英文字母 word
\W :代表一个任意非单词字符。
\s :代表一个任意空白字符。空白包括空格、换行、Tab space
\S :代表一个任意非空白字符
[c-g]:范围。代表c到g的一个任意字符。
[aeg]:枚举。代表a、e或g的一个任意字符。
[b-dh-k]: 混合。代表b、c、d、h、i、j或k的一个任意字符。
[b-dhmq]: 混合。代表b、c、d、h、m或q的一个任意字符。
[^b-d] : 取反。代表不是b、c、d的任意字符。
[^hmq] : 取反。代表不是h、m、q的任意字符。
▲ 圆括号表达形式:形成互斥
(表达式|表达式):要么是第一个、要么是第二个。
▲ 控制出现次数
? :表示被控制的字符(该符号之前的字符)出现0~1次。
a?b:能代表ab、aab(不能)、b
* :表示被控制的字符(该符号之前的字符)出现0~N次。
a*b:能代表ab、aab、aaaaaaaaab、b
+ :表示被控制的字符(该符号之前的字符)出现1~N次。
a+b:能代表ab、aab、aaaaaaaaab、b(不能)
{m,n}:表示被控制的字符(该符号之前的字符)出现m~n次。
a{2,4}b:能代表ab(不能)、aab、aaaaaaaaab(不能)、b(不能)、aaaab
{m,}:表示被控制的字符(该符号之前的字符)至少出现m次。
{,n}:表示被控制的字符(该符号之前的字符)最多出现n次。
{n}:表示被控制的字符(该符号之前的字符)必须出现n次。
推荐:可以查找别人已经写好的正则表达式。
▲ ^表示开头^也匹配“\n”或“\r”之后的位置。(换行和回车)
; $表示结尾。 $也匹配“\n”或“\r”之前的位置。
public class 验证用户输入广州座机
{
public static void main(String[] args)
{
System.out.println("请输入您的电话号码,按区号-号码的格式输入:");
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()){
String line = sc.nextLine(); // 读取下一行
// 判断该字符串是否与正则表达式匹配
if ( line.matches("020-\\d{8}") )
{
System.out.println("恭喜您,我们已经记录了您的号码");
break;
}
else
{
System.out.println("号码无效,请重新输入");
}
}
}
}
public class 验证用户输入身份证
{
public static void main(String[] args)
{
System.out.println("请输入您的身份证号:");
Scanner sc = new Scanner(System.in);
final String yearPattern = "\\d{6}((19\\d{2})|(20((0[0-9])|(1[0-6]))))";
final String monthPattern = "((0[1-9])|(1[0-2]))";
final String dayPattern = "((0[1-9])|([1-2][0-9])|(3[01]))";
String idPattern = yearPattern + monthPattern + dayPattern
+ "\\d{3}[0-9X]";
while(sc.hasNextLine()){
String line = sc.nextLine(); // 读取下一行
// 判断该字符串是否与正则表达式匹配
if ( line.matches(idPattern) )
{
System.out.println("我们已经记录了您的身份证号,请老实一点!");
break;
}
else
{
System.out.println("号码无效,请重新输入");
}
}
}
}
移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
联通:130、131、132、152、155、156、185、186
电信:133、153、180、189、(1349卫通)
Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");
- 【正则表达式】正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- JAVASE总结--Math类
- JVM垃圾收集器
- bzoj 2654: tree (二分+最小生成树)
- mysql优化配置my.cnf
- mapx点击鼠标获取经纬度
- 正则表达式
- 【codeforces709B】 Checkpoints——小水题
- Android.线程池的原理和线程池管理类的使用
- Floyd(求图中任意两点最短路径)
- JavaWeb学习总结(一)---在windows7下卸载JDK
- JAVASE总结--File类
- python_snake
- Linux vi中查找字符内容的方法
- 需求、开发和测试的“三足鼎立”