正则表达式

说明

[abc]

a、b、c中任意一个字符

[^abc]

除了abc的任意一个字符

[a-z]

a-z中任意一个字符

[a-zA-Z0-9]

a-zA-Z0-9中任意一个字符

[a-z&&[^bc]]

a-z中除了bc的任意一个字符

知识点案例:

String regex1="[a-z]";

String regex2="[^a-z]";

String regex3="[a-z&&[^bc]]";

System.out.println("a".matches(regex1));  //true

System.out.println("0".matches(regex1));  //false

System.out.println("a".matches(regex2));  //false

System.out.println("0".matches(regex2));  //true

System.out.println("a".matches(regex3));  //true

System.out.println("b".matches(regex3));  //false

正则表达式

说明

.

任意一个字符

\d

任意一个数字字符,相当于[0-9]

\w

单词字符,相当于[a-zA-Z0-9_]

\s

空白字符,相当于[\t\n\f\r\x0B](x0B:匹配值为十六进制的ASCII字符;\r:回车;\f:换页;\n:换行;\t:制表)

\D

非数字字符

\W

非单词字符

\S

非空白字符

知识点案例:

String regex1="\\d";

String regex2="\\D";

String regex3="\\s";

String regex4="\\S";

String regex5="\\w";

String regex6="\\d";

System.out.println("1".matches(regex1));  //true

System.out.println("1".matches(regex2));  //false

System.out.println(" ".matches(regex3));  //true

System.out.println(" ".matches(regex4));  //false

System.out.println("_".matches(regex5));  //true

System.out.println("_".matches(regex6));  //false

正则表达式

说明

x?

0个或1个x

x*

0个或任意多个x

x+

1个或任意多个x

x{n}

n个x

x{n,}

n个到任意多个x

x{m,n}

m个到n个x

知识点案例:

-6位数字

-第一种匹配 [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]

-简化1      \d\d\d\d\d\d

-简化2      \d{6}

知识点:分组“()”:

圆括号表示分组,圆括号内的正则表达式为一个整体,分组可以用“|”表示“或”

案例:

匹配手机号前面的区号:

(\+86|0026)?\s?\d{11}

表示+86或者0086出现其中一个后接1个或0个空白字符后接11位任意数字

知识点:“^”和“$”

边界匹配

-^代表字符串开始

-$代表字符串结束

案例:

匹配用户名规则:从头到尾连续8~10个单词字符

方法一:\w{8,10}

方法二:^\w{8,10}$

对于字符串“abcd1234_abcd”,方法一通过,方法二是不通过的,因为方法一只看到前8到前10个字符,对于后面的字符不予匹配,所以只要前8到前10个字符满足则通过验证,而方法二则是匹配8-10个字符,从前8到前10,是有边界结束的,因为并不是正好有8-10个字符,所以匹配失败,验证不通过。但是在我们用eclipse验证时,发现方法一在验证时也是不予通过的,原因会在接下来进行说明

String包含的正则方法

1.知识点:matches方法

作用:正则表达式与字符串进行匹配,成功返回true

boolean matches(String regex)

案例

String regex="[\\w.]+@([a-zA-Z0-9-]+\\.)+[a-zA-Z0-9]{2,4}";

String email="wangcongming@oraclewdp-china.com";

System.out.println(email.matches(regex));     //true

注意:matches()的参数底层实际上是^regex$

2.知识点:split方法

作用:将字符串按照特定的分隔符拆分成字符串数组,即满足正则表达式的字符串作为分隔符,前后分割成元素,成为字符串数组
String[] split(String regex)

案例:

情况一:
String str="m-a-h-u-a-t-e-n-g";
String[] arr=str.split("-");
System.out.println(Arrays.toString(arr));
结果:[m, a, h, u, a, t, e, n, g]

情况二:
String str="-m-a-h-u-a-t-e-n-g";
String[] arr=str.split("-");
System.out.println(Arrays.toString(arr));
结果:[, m, a, h, u, a, t, e, n, g]

情况三:
String str="m-a-h-u-a-t-e-n-g-";
String[] arr=str.split("-");
System.out.println(Arrays.toString(arr));
结果:[m, a, h, u, a, t, e, n, g]

总结:null也可以作为一个数组元素,但是对于字符串分割来说包前不包后,前面的null包括,后面的null舍去

3.知识点:replaceAll方法
作用:将符合正则表达式的字符串替换为其他字符
String replaceAll(String regex,String replacement)

练习:1.用户名注册:
            用户名要求:8~12位字符,不能含有空格,进行匹配提示;
            匹配成功,提示此用户名可用,匹配失败,提示此用户名含有非法字符
            2.邮箱注册
            邮箱名6~12位的单词字符,后缀的名称2~10位的单词字符,最后接域名
            例:javapractice@123.com

代码如下:

public class TextRegex {
    public static void main(String[] args) {
        String regex1="[\\w&&[^_]]{8,12}";
        String regex2="[\\w]{6,12}@[\\w]{2,10}(.com|.cn|.com.cn)";
        Scanner sc=new Scanner(System.in);
        while(true) {
            System.out.println("请输入用户名:");
            String username=sc.next();
            if(username.matches(regex1)) {
                System.out.println("用户名可用!");
                break;
            }else {
                System.out.println("用户名含有非法字符!");
            }
        }
        while(true) {
            System.out.println("请输入邮箱");
            String mailname=sc.next();
            if(mailname.matches(regex2)) {
                System.out.println("邮箱可用!");
                break;
            }else {
                System.out.println("邮箱名含有非法字符!");
            }
        }
    }
}

正则表达式(校验规则)相关推荐

  1. 手机号校验规则的正则表达式,包括199及177号段

    手机号校验规则的正则表达式,包括199及177号段,如下实例: //常用验证-手机号 mini.VTypes["telephoneErrorText"] = "请输入有效 ...

  2. java正则表达式验证密码_java密码验证正则表达式校验

    ,正则表达式就是记录文本规则的代码. php密码验证正则表达式(8位长度限制) //密码验证 $password = "zongzi_Abc_oo13a2"; $n = preg_ ...

  3. element 修改表单值后表单验证无效_element 表单自定义校验规则

    首先在我们的vue + element 项目中,尤其是后台有关的项目或者涉及到大量操作数据的平台,重中之重的就是关于数据的验证,也就是关于我们表单的验证,如果在前端做好了这些,相当于在前后台交互数据的 ...

  4. JSR303校验的简单使用以及自定义校验规则的代码编写

    文章目录 一.JSR303校验 1.简介 2.相关注解 3.JSR303依赖包 二.JSR303自带的校验规则 1.在JavaBean上添加校验规则 2.生效校验规则 2.1 controller返回 ...

  5. 自定义邮箱和手机号码的校验规则

    自定义邮箱和手机号码的校验规则 export default {name: "User",data() {// 验证邮箱的校验规则let checkEmail = (rule, v ...

  6. 电话,手机,微信账号,邮箱正则表达式校验

    正则表达式用好了真的挺强大 手机号校验 电话校验 邮箱校验 微信账号校验 1. 手机号校验 /*** 校验规则:* 手机号为11位* 首位只能为1* 第二位只能是3-9数字* 后面9位可以是任意数字* ...

  7. C#使用正则表达式校验邮箱

    在C#中,可以使用Regex正则表达式类来校验前台提交过来的邮箱字段信息是否符合要求,Regex类是C#中有关正则表达式处理的相关类,功能强大,我们只需要在实例化Regex类的时候指定相应的规则为邮箱 ...

  8. js正则表达式校验:手机号、身份证、护照、港澳台通行证、银行卡号、车牌号等......

    js正则表达式校验:手机号.身份证.护照.港澳台通行证.银行卡号等...... 1.手机号 2.身份证号 3.护照 4.港澳台通行证.居住证 5.银行卡号 6.军官证 7.户口本 8.用户名.中文姓名 ...

  9. iview组件安装、加载,以及关于iview的校验规则和相关校验函数

    安装iview 1.安装依赖 (1) 从node.js官网下载并安装node,安装过程很简单,一直点下一步就ok了,安装完之后,我们通过打开命令行工具(win+R),输入node -v 命令,查看no ...

  10. java 车牌号加减密_[Java教程]车牌号校验规则

    [Java教程]车牌号校验规则 0 2018-10-19 16:00:59 一.车牌验证规则 1.传统车牌 第1位为省份简称(汉字),第二位为发牌机关代号(A-Z的字母)第3到第7位为序号(由字母或数 ...

最新文章

  1. 三角测量计算三维坐标的代码_浅谈三维扫描仪的由来
  2. Material Designer的低版本兼容实现(五)—— ActivityOptionsCompat
  3. golang工程打包不发布
  4. ITIL4考试练习题
  5. nexus keytool docker
  6. 解决 No converter found for return value of type 的问题
  7. jrebel使用方法
  8. 马未都说收藏:陶瓷篇(8、9)元青花、永宣青花
  9. 计算机原理处理器,多处理器结构-微计算机原理-电子发烧友网站
  10. 虚拟化技术(2)系统虚拟化
  11. 联想ERP项目实施案例分析(9):工作方法总结
  12. 终于下定决心经营自己的 GitHub 账号
  13. 自定义Win7虚拟机的睡眠时间
  14. 小程序数据框有重影_微信小程序input重影什么原因?怎么解决重影?
  15. IBM ThinkPad F11系统恢复完全技巧
  16. 新服务器安装 -mima
  17. 每天学点英语语法-重头开始8
  18. glog编译安装使用
  19. 极狐gitlab版本升级 #JIHULAB101
  20. 水利水电之水利工程测量第二章

热门文章

  1. 【云原生之Docker实战】使用docker部署nightingale运维监控平台
  2. apache的url_rewrite地址重写中得到问号后面的参数
  3. 手撕JDBC笔记(含源码),进阶框架必备
  4. 使用winhex查看FAT16格式结构
  5. 软考高级哪个更容易过
  6. [转] ubuntu 一些常用软件的安装
  7. 阿里云服务器MySQL与本地连接(Linux)
  8. linux下查看bios命令,Linux查看BIOS版本/信息详情
  9. java将数据库数据转换成word文档并且生成pdf文件
  10. 一篇文章让你了解ADAS-HIL测试方案