加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-13 22:51:49 所属栏目:百科 来源:网络整理
导读:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 给定一个正则表达式和另一个字符串,我们可以达到如下的目的: 1. 给定的字
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。
正则表达式的特点是:
1. 灵活性、逻辑性和功能性非常的强;
2. 可以迅速地用极简单的方式达到字符串的复杂控制。
3. 对于刚接触的人来说,比较晦涩难懂。

由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。

Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();此三句等效于boolean b = Pattern.matches("a*b","aaaaab");

以下使用Java写的一个用正则表达式来校验qq号是否合法(其中也用了传统的方法来做个比较),手机号字段是否以规定的号数开头package 正则表达式;


package 正则表达式;

import java.util.regex.Pattern;

public class RegexDemo {

public static void main(String[] args) {
// TODO Auto-generated method stub
checkQQ();//自己实现代码校验QQ号是否正确
checkQQ_1();//正则表达式来校验qq号码
checkTel();//正则表达式来校验手机号码字段
}
//匹配手机号段只有13xxx 15xxx 18xxx
public static void checkTel()
{
String tel = "13900001111";
String telReg = "1[358]d{9}";//第一位是1或者[1],第二位是3,5,8中的一个,后面是9个数字
System.out.println("手机号字段"+tel.matches(telReg));
}

//此静态方法应用正则表达式来校验qq号码
public static void checkQQ_1()
{
String qq = "111h23";
//规则,第一位0-9之间的数字,第二位0-9之间的数字,位数在4--14位数字

String regex = "[1-9][0-9]{4,14}";//此行和下面一行是一个意思
String regex2 = "[1-9]d{4,14}";

//参数:regex - 用来匹配此字符串的正则表达式
//boolean flag = qq.matches(regex);//通知此字符串是否匹配给定的正则表达式。
boolean flag = Pattern.matches(regex,qq);//与上面一行效果一致
if(flag)
System.out.println(qq+"合法");
else
System.out.println(qq+"不合法");
}


/*
* 对QQ号码进行校验
* 要求:5--15 0不能开头,只能是数字
*
* 这种方式使用String类中的方法进行了组合完成了需求,过于复杂
*/
public static void checkQQ()
{
String qq = "112w45";
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) {
// TODO: handle exception
System.out.println("qq:"+qq+" 中出现非法字符!!。。。");
}

/*或者下面的
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)//flag一直为真
{
System.out.println("qq:"+qq);
}
else
{
System.out.println("出现非法字符");
}
*/
}
else
{
System.out.println("不能0开头");
}
}
else
{
System.out.println("长度不对!!!");
}
}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读