在Java编程中使用正则表达式
作者:selFire 发布时间:2022-10-20 02:10:38
在程序设计过程中,经常需要对输入的数据格式进行检查,这时就会用到正则表达式,匹配正则表达式则数据格式正确,否则格式错误。为了检查输入的数据是否满足某种格式,可以使用String类的matches()方法进行判断,语法格式如下:
boolean matches(String regex)
regex:指定的正则表达式。
返回值:返回boolean类型。
该方法用于告知当前字符串是否匹配参数regex指定的正则表达式,返回值是boolean类型,如果当前字符串与正则表达式匹配,则该方法返回true,否则返回false。
正则表达式是由一些含有特殊意义的字符组成的字符串,这些含有特殊意义的字符称为元字符,下面列出了正则表达式的部分元字符,在正则表达式的写法中,要在下列元字符的前面添加“\”符号进行转译,例如元字符“\d”在正则表达式的写法中是“\d”,但是对于“.”,转译后就不代表任意一个字符啦,而是表示一个具体的句点。
.:代表任意一个字符。
\d:代表0~9的任何一个数字。
\D:代表任何一个非数字字符。
\s:代表空白字符。
\S:代表非空白字符。
\w:代表可用作标识符的字符,但不包括“$”。
\W:代表不可用作标识符的字符。
\p{Lower}:代表小写字母a~z。
\p{Upper}:代表大写字母A~A。
\p{ASCII}:ASCII字符。
\p{Alpha}:字母字符。
\p{Digit}:十进制数字,0~9。
\p{Alnum}:数字或字母字符。
\p{Punct}:标点符号。
\p{Graph}:可见字符。
\p{Print}:可打印字符。
\p{Blank}:空白或制表符。
\p{Cntrl}:控制字符。
在使用 正则表达式时,如果需要某一类型的元字符多次输出,逐个输入就相当麻烦,这时就可以使用正则表达式的限定字符来重复次数,下面列出了常用限定符及其含义。
?:0次或1次。
*:0次或多次。
+:0次或1次。
{n}:重复n次。
{n,}:至少重复n次。
{n,m}:重复n~m次。
在正则表达式中还可以用方括号把多个字符括起来,方括号中各种正则表达式代表不同的含义,下面列出了方括号中元字符及其含义。
[abc]:表示a、b或者c。
[^abc]:表示a、b和c之外的任何字符。
[a-zA-Z]:a~z或A~Z的任何字符。
[a-d[m-p]]:a~d或m~p的任何字符。
[a-z&&[def]]:d、e或者f。
[a-z&&[^bc]]:a~z之间不含b和c的所有字符。
[a-z&&[^m-p]]:a~z之间不含m~p的所有字符。
用法示例:
1、车牌号:
/**
*
* @description:验证车牌号
* @param carNum
* 豫A106EK
* @return 合法:true 不合法:false
*/
public static boolean validateCarNum(String carNum) {
boolean result = false;
String[] provence = new String[] { "京", "津", "冀", "晋", "辽", "吉", "黑", "沪", "苏", "浙", "皖", "闽", "赣", "鲁", "豫", "鄂", "湘", "粤", "桂", "琼", "渝",
"川", "黔", "滇", "藏", "陕", "甘", "青", "宁", "新", "港", "澳", "蒙" };
String reg = "[\u4e00-\u9fa5]{1}[A-Z]{1}[A-Z_0-9]{5}";
boolean firstChar = false;
if (carNum.length() > 0) {
firstChar = Arrays.asList(provence).contains(carNum.substring(0, 1));
}
try {
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(carNum);
if (m.matches() && firstChar) {
result = true;
} else {
result = false;
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
2、手机号码:
/**
*
* @description:验证手机号码
* @param mobileNum 15516985859
* @return 合法:true 不合法:false
*/
public static boolean isMobileNum(String mobileNum) {
boolean result = false;
try {
Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");
Matcher m = p.matcher(mobileNum);
result = m.matches();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
手机号+固定电话:010-1111111,15516985859,0377-1111111
//java检测是否为电话号码(手机、固定电话验证)
String legalPhone = "";
String regExp ="^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}|[0]{1}[0-9]{2,3}-[0-9]{7,8}$";
Pattern p = Pattern.compile(regExp);
Matcher m = p.matcher(importPotentialBFOs[i].getLegalPhone());
if(m.find()){ //注意:m.find只能用一次,第二次调用后都为false
legalPhone = importPotentialBFOs[i].getLegalPhone();
uploadTmp.setLegalTelephone(legalPhone);
}else{
throw new BizException("联系电话格式错误!");
}
3.实数:
String[] arrs=new String[]{"a","1.123","-1.23","0","+111"};
String regex="-?\\d+\\.?\\d*";
Pattern p = Pattern.compile(regex);
for (int i = 0; i < arrs.length; i++) {
Matcher m = p.matcher(arrs[i]);
System.out.println(arrs[i]+":"+m.matches());
}
打印:
a:false
1.123:true
-1.23:true
0:true
+111:false


猜你喜欢
- 源起我本想删写一小段代码用于删除一串字符串中的连续重复的指定字符,可能也是长时间不写代码,而且有的时候写代码只途快,很多基础知识都忘光了。我
- 先说需求: 1、django 自带了admin后管,如果我们需要使用,只需把我们定义的models注册即可;2、但如果只是简单注册,那显示的
- mutations的调用方法直接通过$store.commit调用<button @click="$store.commit
- 本文实例为大家分享了python实现坦克大战的具体代码,供大家参考,具体内容如下#功能实现游戏主窗口import pygame,time,r
- 阅读上一篇:WEB前端开发经验总结 ⅠWEB标准篇现在我们接着来讲怎么在实际开发中结合我前面所讲的理论来开发制作页面吧。现在就来看看我们要制
- javascript实现翻页效果:<html> <head> <title>上下翻页看 - aspxho
- 所谓严格模式其实就是一个不会赋值给任何变量的字符串 “use strict”如果在全局作用域下 给出这个提示,那整个脚本将采用严格模式。也可
- 本文介绍python操作excel的方法(xlsxwriter包的使用),具体内容如下xlsxwriter包的安装pip install x
- ECMAScript 5.1规范§15.4.4.4 中说到:concat函数是有意设计成通用的;它并不要求它的this值必须得是个Array
- Pycharm Database Navigator连接mysql1.安装Database Navigator由于使用的是Pycharm C
- 理科学生应该都了解过共轭吧,经常在数学或者物理还有化学中出现,在坐标轴上去描述共轭函数还是比较清晰的,py语言里也经常会出现关于共轭函数的使
- 当需要实现html页面部分模块截图并具有保存图片功能时,前台直接生成截图并下载会方便的多。多的不说,直接看代码首先我们需要引入2个js文件:
- 本文实例讲述了Python利用前序和中序遍历结果重建二叉树的方法。分享给大家供大家参考,具体如下:题目:输入某二叉树的前序遍历和中序遍历的结
- Apache SkyWalking 在本月初发布了 SkyWalking Backend、UI 的 9.2.0 版本 以及&nbs
- 本文实例讲述了Python实现的端口扫描功能。分享给大家供大家参考,具体如下:一 代码import sysimport socketimpo
- 想要实现自定义标签和过滤器需要进行准备工作:准备(必需)工作:1 在某个app下创建一个名为templatetags(必需,且包
- 1. 从字典创建Dataframe>>> import pandas as pd>>> dict1 =
- globalStorage 这个也是html5中提出来,在浏览器关闭以后,使用globalStorage存储的信息仍能够保留下来,并且存储容
- 本文实例讲述了Python 文件管理的方法。分享给大家供大家参考,具体如下:一、Python中的文件管理文件管理是很多应用程序的基本功能和重
- js监听浏览器回车事件,可以支持ie6+,火狐,谷歌等浏览器。<html><head><script type