其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

java判断证件姓名正则表达式

GG网络技术分享 2025-03-18 16:14 4


问题描述:

姓名首字必须是汉字,从第二个字起可使用拼音,且一旦使用拼音后续文字都必须是拼音;姓名不可包含除.之外的特殊字符,且只能包含一个.(后台校验);规则不符合时提示“姓名首字必须是汉字,从第二个字起可使用拼音,且一旦使用拼音后续文字都必须是拼音,且不可包含除.以外的特殊符号,且仅能包含1个.

网友观点:

^(?!.*\\..*\\.)[\\u4e00-\\u9fa5]([\\u4e00-\\u9fa5\\.]*|[A-Za-z\\.]*)$

注意如果是在字符串中写正则表达式,所有的\\都要写成\\\\

详解Java 正则表达式 (上篇)

前言

在编程语言中,除了容器集合、多线程并发、IO流等等基础组件之外,还有一项专门处理字符串的“奇淫巧技”,这就是正则表达式。Perl语言正是凭借强大的正则表达式才异军突起的。

对于Java来说,自从jdk1.7之后,正则表达式也逐渐强大起来,不再是之前的半吊子了。现在的Java也非吴下阿蒙,其正则表达式也不逊于其他主流语言了。

本篇将详细描述Java正则表达式的用法、技巧等等,让你领略一下正则表达式的强大功能。

由于内容较多,整个文章分为上中下三篇。上篇内容介绍 基础替代符号; 中篇内容介绍Java的正则组件以及相关API; 下篇内容特别介绍转义字符的使用。

概述

何为正则表达式?英文称为Regular Expression。 其实这个翻译有点误导性,如果翻译成“规则表达式”,可能更好理解。

设想这么一个场景: 某一天,小舟同学在用word编辑文案,突然意识到某个单词好像拼写有误, 把Java 错写了Jave。 由于文字量比较大,手工一个个替换费时费力,好容易遗漏出错,但是好在word有自动替换功能,一键把全部Jave替换成Java即可。 但是,好景不长,小舟发现有些错误拼写成了Jave,还有些错误拼写成了Javo,还有JavqJavz, Javd等等,还有连自己都不知道拼写成什么玩意的。

现在该怎么办? 小舟设想,如果有一个功能,能把以Jav开头的,不管第四个字母是什么,全部替换成Java。比如说,Jav*,以*代替任意字母,全部替换成Java


这种以某些特殊字符来代替另外一些常用字符的表达方式,就称为正则表达式。另外,正则表达式是不限于编程语言的,在一些基本文字软件中,都有此类功能的集成。


基础替代符

在Java中, 把正则表达式的替代符号分为以下几类:


字符匹配符与范围控制符

  1. . (点) 任意字符
  2. \\s (反斜杠加小写字母s) 空白字符: 回车,制表,空格,换行
  3. \\S (反斜杠加大写字母S)非空白字符, 除了上面那四个空白字符
  4. \\w (反斜杠加小写字母w)单词字符: 小写字母a-z, 大写字母A-Z, 数字0-9, 下划线 _
  5. \\W (反斜杠加大写字母W)非单词字符,除了上面提到的那些单词字符
  6. [ ] (中括号)范围字符
    1. [abc]表示字母abc中的任意一个
    2. [a-z]表示字母a到z中的任意一个
    3. [^abc] ^ 为取非, 除了abc, 剩下的全部字符
    4. [abc[def]]这种写法为并集,意为abcdef中的任意一个
    5. [abc&[bce]]& 表示, 也就是交集。 abc 与上 bce, 最终结果为bc


数量控制符

上面介绍的字符匹配符和范围控制符,一般是与数量控制符组合使用,才能发挥真正威力。 而数量控制符号,分为贪婪型,勉强型,和占有型三种类型,每种类型在不同的场合有不同的用法。

贪婪型

  1. ? 表示1个或0个。换句话说,表示要不然没有,要不然只有1个
  2. * 表示0个或多个。
  3. + 表示1个或多个。
  4. {n}表示正好n个
  5. {n,m} 表示n到m个,这是一个左闭右闭区间
  6. {n,}表示至少n个


勉强型

相比于贪婪型,勉强型只是多了一个?:


  1. ?? 表示1个或0个。换句话说,表示要不然没有,要不然只有1个
  2. *? 表示0个或多个。
  3. +? 表示1个或多个。
  4. {n}?表示正好n个
  5. {n,m}? 表示n到m个,这是一个左闭右闭区间
  6. {n,}?表示至少n个

占有型

相比于贪婪型,占有型多了一个 +


  1. ?+ 表示1个或0个。换句话说,表示要不然没有,要不然只有1个
  2. *+ 表示0个或多个。
  3. ++ 表示1个或多个。
  4. {n}+表示正好n个
  5. {n,m}+ 表示n到m个,这是一个左闭右闭区间
  6. {n,}+表示至少n个

不同类型的区别

现在详细分析 贪婪型、勉强型和占有型的区别, 举例如下:


标签:

提交需求或反馈

Demand feedback