当前位置: 首页 > news >正文

正则表达式(语法+例子)

文章目录

  • 一、介绍
  • 二、语法
    • 1、匹配字符
    • 2、表示数量的字符
    • 3、边界字符
    • 4、其他字符
    • 5、转义字符
  • 三、例子
    • 1、邮箱
    • 2、用逗号分隔的数字集合1,2
    • 3、允许一位小数
    • 4、20yy-mm-dd日期格式
    • 5、手机号
    • 6、匹配html、xml标签


一、介绍

  • 正则表达式(Regular Expression),又称规则表达式。根据定义好的“语法规则”用来匹配、查找字符串。

二、语法

1、匹配字符

语法描述
[a-z]a-z的任意一个字符
[a-zA-Z0-9]a-zA-Z0-9中的任意一个字符
[^abc]除了abc的任意字符
[a-z&&[^bc]]a-z中除了bc以外的任意字符
.任意一个字符
\d任意一个数字字符=[0-9]
\D非数字字符
\w单词字符[a-zA-Z0-9_ ]
\W非单词字符
\s空白字符[\t\n\r\f]
\S非空白字符

2、表示数量的字符

语法描述
x?表示0个或1个x
x*表示0个或任意多个x
x+表示大于等于1个
x{n}表示n个x
x{n,}表示大于等于n个
x{n,m}表示n到m个

3、边界字符

  • ^ 匹配开始位置([]外,内=取反)
//匹配开始是A的一个字符
String str1="AABBA";
String regex="^A";
String str2=str1.replaceAll(regex,"K");	//KABBA
  • $ 匹配结束位置
//匹配结束位置是一个或多个A字符
String str1="AABBAA";
String regex="A+$";
String str2=str1.replaceAll(regex,"K");	//AABBK

4、其他字符

// () 表示一个整体
// | 表示或的关系
//以158或159开头
String str1="1583300";
String regex="^(158|159)\\d{4}";
boolean b=str1.matches(regex);	//true

5、转义字符

  • 当字符串中包含正则表达式中的含义字符时,需要转义才会把他当成普通字符来匹配
字符转义
[\[
.\.
+\+
\\\
{\{
}\}
//将[替换成0
String str="[1234";
//若不转义则不代表普通字符[,而是正则表达式中的[
String regex="\\[";
String str1=str.replaceAll(regex,"0"); //01234

三、例子

1、邮箱

//单词字符1个或多个
//有一个@
//字母一个到多个
//. 和一个到多个字母
//这个整体一个到多个
"[a-zA-Z0-9_]+@[a-zA-Z]+(\\.[a-zA-Z]+)+";

2、用逗号分隔的数字集合1,2

//([1-9:一个到多个]
//[0-9:0或任意多个]
//,1个逗号
//* 前面部分0或任意多个
//后面同前面
"^([1-9]+[0-9]*,)*[1-9]+[0-9]*$";

3、允许一位小数

"(^0\.[1-9]$)|(^[1-9]\d*(\.\d)?$)";

4、20yy-mm-dd日期格式

"^20\d{2}-(0|1){1}[0-9]-(0|1|2|3){1}[0-9]$";

5、手机号

"^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$";

6、匹配html、xml标签

//将标签内和标签内的字符或者html的空格
//末尾的空白字符
//都替换成空串
str=str.replaceAll("(</?[^<>]+>)|(&nbsp;)","").replaceAll("\\s+$","");
http://www.lryc.cn/news/56175.html

相关文章:

  • Properties和IO流集合的方法
  • python 生成器、迭代器、动态新增属性及方法
  • Java处理JSON
  • 58-Map和Set练习-LeetCode692前k个高频单词
  • 线程生命周期及五种状态
  • OBCP第八章 OB运维、监控与异常处理-灾难恢复
  • 亚马逊云科技Serverless Data:数字经济下的创新动能
  • 【Ruby学习笔记】15.Ruby 异常
  • 聊聊MySQL主从延迟
  • 【C++从0到1】19、C++中多条件的if语句
  • 【多微电网】计及碳排放的基于交替方向乘子法(ADMM)的多微网电能交互分布式运行策略研究(Matlab代码实现)
  • Linux(centos7)安装防火墙firewalld及开放端口相关命令
  • Linux部署.Net Core Web项目
  • 【C++】STL之stack、queue的使用和模拟实现+优先级队列(附仿函数)+容器适配器详解
  • 第⑦讲:Ceph集群RGW对象存储核心概念及部署使用
  • 从异步到promise
  • Linux系统中进行JDK环境的部署
  • Leetcode.1033 移动石子直到连续
  • 【Java】在SpringBoot中使用事务注解(@Transactional)时需要注意的点
  • 找到序列最高位的1和最高位的0并输出位置
  • 面试总结sdiugiho
  • WIN10無法再使用 IE 瀏覽器打开网页解决办法
  • 搭建SpringBoot和Mysql Demo
  • 晶振03——晶振烧坏的原因
  • 项目管理的难点
  • day22 ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点
  • ChatGPT 这个风口,普通人怎么抓住?
  • Python代码规范:企业级代码静态扫描-代码规范、逻辑、语法、安全检查,以及代码规范自动编排(2)
  • acme.sh从 letsencrypt 生成SSL免费证书并自动更新证书
  • 基于html+css的evenly布局