/**
* [abcd] :abcd 四个字符中单一个
* [^abc] 除了abc之外的任意一个字
* | : 或者
* (abc) abc 分为一组
*
* — :a-z 小写的a 到小写z
*
* * 0 次或多次
*
* +:1次或多次
* ?:0次或者1次
* [a-z]+: a,abacdsd 123
* [A-Z]?:只能出现一次
* {n}:只能出现n次
* [0-9]{6}:必须有6个数字
* {n,}:最少出现n次
* [a-z]{6,}
* {n,m}:最少n次,最多m次
* .:除了\n意外的任意字符
* \d:相等于[0-9]
*
*/
//验证 6位数字以上
// String s= "123456";
// //正则表达式
// String re = "[0-9]+";
// System.out.println(s.matches(re));
//
//
// s = "12312312";
// re= "[0-9]+";
// System.out.println(s.matches(re));
//
// str = "-123a123";
// //整数:正整数、负整数
// reg = "^([0-9]+)|(-[0-9]+)$";
// System.out.println(str.matches(reg));
//
// //小数:1.0
// str = "1.1a";
// reg = "^([0-9]+\\.[0-9]+)|(-[0-9]+\\.[0-9]+)$";
// reg = "^-?[0-9]+\\.[0-9]+$";
str = "1";
reg = "^0?[1-9]|[12][0-9]|3[01]$";
System.out.println(str.matches(reg));
//月:12
/*
* 0 1-9
* 1 0-2
*/
str = "121";
reg = "^0?[1-9]|1[0-2]$";
System.out.println(str.matches(reg));
//年:1900-3000
/*
* 1 9 0-9 0-9
* 2 0-9{3}
* 3 0{3}
*/
str = "2999";
reg = "^19\\d{2}|2\\d{3}|30{3}$";
System.out.println(str.matches(reg));
//网址:http://www.baidu.(com|cn|net)
str = "http://www.heiheihei.com";
reg = "^http://www\\.\\w{3,}\\.(com|cn|net)$";
System.out.println(str.matches(reg));
//手机号码:1 [3-9]\\d{9}
str = "17670916624";
reg = "1 [3-9]\\d{9}";
package com.zking.work;
public class Work01 {
public static void main(String[] args) {
// 1、整数或者小数:
// String str = "123.3";
String reg = "^[0-9]+|[0-9]+\\.[0-9]+$";
// String reg = "^\\d+|\\d+\\.\\d+$";
// System.out.println(str.matches(reg));
// 2、只能输入数字:
// String str = "123";
// String reg = "^\\d+$";
// System.out.println(str.matches(reg));
// 3、只能输入n位的数字:
String str = "32425";
String reg = "^[\\d]{5}$";
System.out.println(str.matches(reg));
// 4、只能输入至少n位的数字:
// String str = "324321";
// String reg = "^[\\d]{5,}$";
// System.out.println(str.matches(reg));
// 5、只能输入m~n位的数字:
// String str = "324355";
// String reg = "^[\\d]{3,5}$";
// System.out.println(str.matches(reg));
// 6、只能输入由26个英文字母组成的字符串:
// String str = "ASLKJFDAOSIHD";
// String reg = "^[\\D]+$";
// System.out.println(str.matches(reg));
// 7、只能输入由26个大写英文字母组成的字符串:
// String str = "ASLDJ";
// String reg = "^[A-Z]+$";
// System.out.println(str.matches(reg));
// 8、只能输入由26个小写英文字母组成的字符串:
// String str = "ASLDJ";
// String reg = "^[a-z]+$";
// System.out.println(str.matches(reg));
// 9、只能输入由数字和26个英文字母组成的字符串:
// String str = "ASLDJ324532";
// String reg = "^[\\w]+$";
// System.out.println(str.matches(reg));
// 10、只能输入由数字、26个英文字母或者下划线组成的字符串:
// String str = "_ASLDJ324532_";
// String reg = "^[\\w]+|[_]$";
// System.out.println(str.matches(reg));
// 11、验证Email地址(邮箱):自己查邮箱格式^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$
// String str = "3917605828@qq.com";
// String reg ="^[1-9][\\d]{8,10}@qq\\.com+$";
// System.out.println(str.matches(reg));
// 12、验证InternetURL(网址):
// String str = "http://www.baidu.com";
// String reg ="^http://www\\.[\\w]{5,30}\\.com+$";
// System.out.println(str.matches(reg));
// 13、验证电话号码:
// String str = "17670916624";
// String reg ="^1[3-9]\\d{9}$";
// System.out.println(str.matches(reg));
//
// 14、验证身份证号(15位或18位数字):200202043112
// String str = "430523200202043112";
// String reg ="^[1-8]\\d{14}|[1-8]\\d{17}$";
// System.out.println(str.matches(reg));
// 15、验证一年的12个月:
// String str = "12";
// String reg ="^\\d{9}|1[12]$";
// System.out.println(str.matches(reg));
// 16、验证一个月的31天:
// String str = "31";
// String reg ="^3[01]$";
// System.out.println(str.matches(reg));
// 17、六位数的密码,数字只能在3-6里选择:
// String str = "456456";
// String reg ="^[3-6]{6}$";
// System.out.println(str.matches(reg));
//
// 参考题:
// 18、ip地址:
//
// IP地址的长度为32位,分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用英文句点“.”隔开。例如:某台计算机IP地址为10.11.44.100。
//
// 分析IP地址的组成特点:250-255、200-249、0-199。
// 这三种情况可以分开考虑,
// 1. 250-255:特点:三位数,百位是2,十位是5,个位是0~5,用正则表达式可以写成:25[0-5]
// 2. 200-249:特点:三位数,百位是2,十位是0~4,个位是0~9,用正则表达式可以写成:2[0-4]\d
// 3. 0-199:这个可以继续分拆,这样写起来更加简单明了.
// 3.1. 0-9: 特点:一位数,个位是0~9,用正则表达式可以写成:\d
// 3.2. 10-99: 特点:二位数,十位是1~9,个位是0~9,用正则表达式可以写成:[1-9]\d
// 3.3. 100-199:特点:三位数,百位是1,十位是0~9,个位是0~9,用正则表达式可以写成:1\d{2}
//
// 于是0-99的正则表达式可以合写为[1-9]?\d,那么0-199用正则表达式就可以写成(1\d{2})|([1-9]?\d),这样0~255的正则表达式就可以写成(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))
// 最后,前面3段加上句点.可以使用{3}重复得到,第4段再来一次同样的匹配,得到IP地址的正则表达式:
//
// String regex = "((25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){3}(25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))";
// String ip = "62.189.123.6";
// System.out.println(ip.matches(regex));
}
}