对QQ号码进行校验。
要求:5~15 0不能开头,只能是数字。
这种方式,是使用了String类中的方法,进行组合完成了需求,但是代码过于复杂。
*/
public static void checkQQ_1()
{
String qq = "1238a9";
int len = qq.length();
if(len>=5 && len<=15)
{
if(!qq.startsWith("0"))
{
try
{
long l = Long.parseLong(qq);
System.out.println("qq:"+l);
}
catch (NumberFormatException e)
{
System.out.println("出现非法字符....");
}
/*
char[] arr = qq.toCharArray();
boolean flag = true;
for(int x=0; x<arr.length; x++)
{
if(!(arr[x]>='0' && arr[x]<='9'))
{
flag = false;
break;
}
}
if(flag)
{
System.out.println("qq:"+qq);
}
else
{
System.out.println("出现非法字符");
}
*/
}
else
{
System.out.println("不能以0开头");
}
}
else
{
System.out.println("长度错误");
}
}
}
正则表达式的第四个功能:
4,获取:将字符串中符合规则的子串取出。
操作步骤:
(1) 将正则表达式封装成对象。
(2) 让正则对象和要操作的字符串相关联。
(3) 关联后,获取正则匹配引擎。
(4) 通过引擎对符合规则的子串进行操作,比如取出。
import java.util.regex.*;
class RegexDemo2
{
public static void main(String[] args)
{
getDemo();
}
public static void getDemo()
{
String str = "ming tian jiu yao fang jia le , da jia";
String reg = "\\b[a-z]{3}\\b";
//将规则封装成对象。
Pattern p = Pattern.compile(reg);
//让正则对象和要作用的字符串相关联。获取匹配器对象。
Matcher m = p.matcher(str);
//System.out.println(m.matches());
//其实String类中的matches方法,用的就是Pattern和Matcher对象来完成的。
//只不过被String的方法封装后,用起来较为简单,但是功能却单一。
//boolean b = m.find();//将规则作用到字符串上,并进行符号规则的子串查找。
//System.out.println(b);
//System.out.println(m.group());//用于获取匹配后的结果。
//System.out.println("matches:"+m.matches());
while(m.find())
{
System.out.println(m.group());
System.out.println(m.start()+"...."+m.end());
}
}
}
练习
import java.util.*;
class RegexTest
{
public static void main(String[] args)
{
checkMail();
}
//需求:对邮件地址进行校验。
public static void checkMail()
{
String mail = "abc12@sina.com";
mail = "1@1.1";
String reg = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";//较为精确的匹配。
reg = "\\w+@\\w+(\\.\\w+)+";//相对不太精确的匹配。
//mail.indexOf("@")!=-1;
System.out.println(mail.matches(reg));
}
/* |
|