本文目录一览:
- 1、关于java中正则表达式的一些语句理解
- 2、求java中正则表达式验证的写法
- 3、java密码正则表达式(可以是纯数字,也可以是纯字母,也可以是数字+字母,6-16 位)
- 4、JAVA 正则法则如有验证年份
- 5、java正则表达式校验 ip
关于java中正则表达式的一些语句理解
//下面是完整代码,具体的分析都在代码注释里:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test6
{
public static void main(String[] args)
{
//正则表达式字符串:
// [] 内的数字表示取值可以是任意一个,
//\d 匹配一个数字字符。等价于[0-9]。
//\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“\\n”匹配\n。
//{n} n是一个非负整数。匹配确定的n次
String regex="1[3458][01256]\\d{8}";
String str="14057539559";
/*
Pattern类:
正则表达式的编译表示形式。
指定为字符串的正则表达式必须首先被编译为此类的实例。
然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。
执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。
compile方法:
static Pattern compile(String regex)
将给定的正则表达式编译到模式中。
*/
Pattern pattern=Pattern.compile(regex);
/*
* Pattern的
matcher方法
根据要匹配的字符序列 ,创建匹配给定输入与此模式的匹配器,然后返回此模式的新匹配器。
*/
Matcher matcher=pattern.matcher(str);
/*
* Matcher的
matches()方法
尝试将整个区域与模式匹配。
当且仅当整个区域序列匹配此匹配器的模式时才返回 true。
*/
boolean bool=matcher.matches();
if (bool==true)
{
System.out.println("是联通号");
}
else
{
System.out.println("不是联通号");
}
}
/*
代码如上:。我想问的是:
(1)Pattern pattern=Pattern.compile(regex); 这句话能不能帮我分析一下。
(2)Matcher matcher=pattern.matcher(str);分析一下这句话的作用和每一部的作用。
(3) boolean bool=matcher.matches();比较不需要传入参数?
*/
}
求java中正则表达式验证的写法
String s="苏建安A(2014)0010716";
boolean b = s.matches("苏建安[ABC][(|\\(][0-9]{4}[)|\\)][0-9]{7}");
System.out.println(b);
java密码正则表达式(可以是纯数字,也可以是纯字母,也可以是数字+字母,6-16 位)
正则表达式是一种描述字符串集合的方法,它是以字符串集中各字符串的共有特征为依据的。正则表达式可以用于探索、编辑或者操作文本和数据。它超出了Java程序设计语言的标准语法,因此有必要去学习特定的语法来构建正则表达式。正则表达式的变化是复杂的,一旦你理解了他们是如何被构造的话,你就能解析或者构建任意的正则表达式了。
密码校验规则如下:
1.必须包含数字、字母、特殊字符三种
2.长度至少8位
3.不能包含3位及以上相同字符的重复(hhh123@jixxx)
4.不能包含3位及以上字符组合的重复(123q123c123)
5.不能包含3位以上的正序及逆序连续字符(123#wete#321)
6.不能包含空格、制表符、换页符等空白字符
7.支持特殊字符范围:^$./,;:'!@#%*|?+(){}[]
按照需求进行正则表达式拆解
规则18:
str.matches("^.*[a-zA-Z]+.*$") str.matches("^.*[0-9]+.*$")
str.matches("^.*[/^/$/.//,;:'!@#%/*/|/?/+/(/)/[/]/{/}]+.*$")
规则2:
str.matches("^.{8,}$")
规则3:
!str.matches("^.*(.)\\1{2,}+.*$")
规则4:
!str.matches("^.*(.{3})(.*)\\1+.*$")
规则57:
javaImpl:
first change str to char[]
then for Math.abs(cc[0] - cc[1]) == 1 (cc[0] - cc[1]) == (cc[1] - cc[2])
如果想去掉特殊字符的连续:
first str.split("[^\\w]+") as str1[]
then for str1[]
then for str1[i] javaImpl:
规则6:
!str.matches("^.*[\\s]+.*$")
JAVA 正则法则如有验证年份
目前仍没有人解决1、3、5、7、8、10、12月是31天的大月问题呀
(我本是1楼)如果用正则去验证“数值”,会很舍近求远,不是正则的强项。需要写很多的“向后断言”。效率会一般甚至很低。(目前我看到的上下楼的都是有漏洞的,没法检验闰月和大小月)
我所不取。
我一直用的这个:
static public boolean isValidDate(
int year, int mon, int day,
short year_min,short year_max,
StringBuffer msg)
{
if(yearyear_min || yearyear_max)
{
msg.append("年份必须在("+
year_min+"~"+year_max+
")之间,输入值("+year+")无效\n");
return false;
}else{//
switch(mon){
case 1:case 3:case 5:case 7:case 8:case 10:case 12:{
if(day1 || day31){
msg.append("日号必须在(1~31)之间,输入值("+day+")无效\n");
return false;
}
}break;
case 2:{
if(isLeapYear(year) day29){
msg.append("闰年的闰二月日号必须在(1~29)之间,"+year+"是闰年,输入值("+day+")无效\n");
return false; }else if(day28){
msg.append("非闰年的闰二月的日号必须在(1~28)之间,"+year+"不是闰年,输入值("+day+")无效\n");
return false;
}
}break;
case 4:case 6:case 9:case 11:{
if(day1 || day30){
msg.append("日号必须在(1~30)之间,输入值("+day+")无效\n");
return false;
}
}break;
default:{
msg.append("月份必须在(1~12)之间,输入值("+mon+")无效\n");
return false;
}
}
}
return true;
}
static public boolean isLeapYear(int year){
return (year%4==0 year%100!=0)|| year%400==0;
}
包好。
java正则表达式校验 ip
你直接用matchs判断就可以了,matcher是只要内部有能匹配上的就算满足,不是判断整体。
String rexp = "([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}";
String addr = "11111.1.1.1";
System.out.println("1.1.1.1".matches(rexp));
System.out.println("11.1.1.1".matches(rexp));
System.out.println("111.1.1.1".matches(rexp));
System.out.println("11111.1.1.1".matches(rexp));
true
true
true
false