关于java中正则表达式的一些语句理解

public class Test {
public static void main(String[] args){
String regex="1[3458][01256]\\d{8}";
String str="13057539559";
Pattern pattern=Pattern.compile(regex);
Matcher matcher=pattern.matcher(str);
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();比较不需要传入参数?
最新回答
别闹~

2024-07-03 09:37:34

//下面是完整代码,具体的分析都在代码注释里:
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();比较不需要传入参数?
*/
}
自古美人都是妖

2024-07-03 06:43:09

*******************************************************************************

//校验是否全由数字组成

/^[0-9]{1,20}$/

^ 表示打头的字符要匹配紧跟^后面的规则

$ 表示打头的字符要匹配紧靠$前面的规则

[ ] 中的内容是可选字符集

[0-9] 表示要求字符范围在0-9之间

{1,20}表示数字字符串长度合法为1到20,即为[0-9]中的字符出现次数的范围是1到20次。

/^ 和 $/成对使用应该是表示要求整个字符串完全匹配定义的规则,而不是只匹配字符串中的一个子串。

*******************************************************************************

//校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串

/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/

^[a-zA-Z]{1} 表示第一个字符要求是字母。

([a-zA-Z0-9]|[._]){4,19} 表示从第二位开始(因为它紧跟在上个表达式后面)的一个长度为4到9位的字符串,它要求是由大小写字母、数字或者特殊字符集[._]组成。

*******************************************************************************

//校验用户姓名:只能输入1-30个以字母开头的字串

/^[a-zA-Z]{1,30}$/

*******************************************************************************

//校验密码:只能输入6-20个字母、数字、下划线

/^(\w){6,20}$/

\w:用于匹配字母,数字或下划线字符

*******************************************************************************

//校验普通电话、传真号码:可以“+”或数字开头,可含有“-” 和 “ ”

/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/

\d:用于匹配从0到9的数字;

“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次

可以匹配的字符串如:+123 -999 999 ; +123-999 999 ;123 999 999 ;+123 999999等

*******************************************************************************

//校验URL

/^http[s]{0,1}:\/\/.+$/ 或 /^http[s]{0,1}:\/\/.{1,n}$/ (表示url串的长度为length(“https://”) + n )

\ / :表示字符“/”。

. 表示所有字符的集

+ 等同于{1,},就是1到正无穷吧。

*******************************************************************************

//校验纯中文字符

/^[\u4E00-\u9FA5]+$/

[\u4E00-\u9FA5] :估计是中文字符集的范围吧
你瞎啊撞我心上了

2024-07-03 01:57:00

首先我的Java不太了解,但是我觉得代码还是可以看出一些东西的,我的理解如下:
(1)Pattern pattern=Pattern.compile(regex);

这一句其实是启用正则表达式,你可以从前面"String regex="1[3458][01256]\\d{8}"“看出一些端倪,因为"\\d{8}"有转义字符,简洁说明"String regex="1[3458][01256]\\d{8}"“只是一个字符串"1[3458][01256]\d{8}"“,只有在(1)这一句才正式启用正则表达式.

(2)Matcher matcher=pattern.matcher(str);

这一句就是将str和正则表达式进行匹配

(3)boolean bool=matcher.matches();

这里应该是有默认参数,如果语句执行没有问题就说明这一点

上面三点是我的理解,你可以查一下相关这种语句的使用方法,然后在语句上做一些修改,打印一些变量的信息,这样有助你学习,希望对你有所帮助
满载树色的飞车

2024-07-03 09:03:55

你说的关于JAVA正则表达式 Pattern和Matcher可以看这个网址,很详细。

http://www.cnblogs.com/playing/archive/2011/03/15/1984943.html

正则表达式的学习推荐你看下这个,http://deerchao.net/tutorials/regex/regex.htm

java正则表达式我可以给你写一个demo,

我定义了一个正则表达式String regex="1\\d{10}";意思是这个规则匹配的是以数字“1”开头的,后面跟10位数字的字符,像12345678900符合,但是22345678900以“2”开头就不符合。不会再问我。