正则表达式 学习笔记(入门级别)

正则表达式(Regular Expression)描述了一种字符串匹配的模式(pattern)一般用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

正则在表达式的两种语法:

  • re = /pattern/[flags]
  • re = new RegExp(“pattern”,[“flags”])

正则表达式的组件可以是:

  • 单个的字符
  • 字符集合
  • 字符范围
  • 字符间的选择
  • 或者所有这些组件的任意组合

通过使用正则表达式可以:

  • 测试字符串内的模式。
  • 替换文本。
  • 基于模式匹配从字符串中提取子字符串。

正则表达式的应用领域:

  • c#
  • java
  • javascript
  • linux/unix
  • python
  • PHP
  • Ruby
1. 正则表达式的组成部分
  • 普通字符(例如字符 a 到 z)
  • 特殊字符(称为"元字符")
  • 非打印字符
  • 限定符
  • 定位符
普通字符

普通字符:没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号

特殊字符

下表列出了正则表达式中的特殊字符
在这里插入图片描述

非打印字符

下表列出了表示非打印字符的转义序列:
在这里插入图片描述

限定符

限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配,一共6种,(注意:限定符只出现在范围表达式之后)见下表:
在这里插入图片描述
* 和 + 限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个 ? 就可以实现非贪婪或最小匹配(常用的 .*?

定位符

定位符:能将正则表达式固定到行首或行尾。见下表:
在这里插入图片描述
注意:不能将定位符与限定符一起使用

选择

选择:用圆括号将所有选择项括起来,相邻的选择项之间用 | 分隔。

非捕获元:

  • ?::用圆括号将所有选择项括起来,相邻的选择项之间用|分隔。但用圆括号会有一个副作用,使相关的匹配会被缓存,此时可用?:放在第一个选项前来消除这种副作用
  • ?=:正向预查,在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串
  • ?!:负向预查,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串
反向引用

正则表达式中 “\number” 表示反向引用,表示引用一个捕获组,需要和小括号 “()” 一起使用。
学习地址
在这里插入图片描述

元字符

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

正则表达式的全局标记
  • g:指定将表达式应用到输入字符串中能够查找到的尽可能多的匹配
  • i:指定不区分大小写
  • m:多行搜索模式(多行查找)
2. 正则表达式 运算符优先级
  • 同级 从左到右
  • 不同级 先高后低

下表从最高最低说明了各种正则表达式运算符的优先级顺序:
在这里插入图片描述

3. 字符簇

    在INTERNET的程序中,正则表达式通常用来验证用户的输入。当用户提交一个FORM表单以后,要判断输入的电话号码、地址、EMAIL地址、信用卡号码等是否有效,用普通的基于字面的字符是不够的。所以要用一种更自由的描述我们要的模式的办法,它就是字符簇。

例如:要建立一个表示所有元音字符的字符簇,就把所有的元音字符放在一个方括号:[AaEeIiOoUu]

PHP的正则表达式有一些内置的通用字符簇,列表如下:
在这里插入图片描述
跟在字符或字符簇后面的花括号({})用来确定前面的内容的重复出现的次数:
在这里插入图片描述

4. 常用符号
  • ?:通配符匹配文件名中的 0 个或 1 个字符,? 前面的字符最多只可以出现一次
  • *:通配符匹配零个或多个字符,* 号前面的字符可以不出现,也可以出现一次或者多次
  • ^:为匹配输入字符串的开始位置
  • $:为匹配输入字符串的结束位置
  • +:匹配一个或者多个,+ 号前面的字符必须至少出现一次
5. 常用正则表达式
  • [0-9]:匹配单个数字
  • [0-9]+:匹配多个数字
  • [a-z]:匹配单个字母
  • [a-z]+:匹配多个字母
  • abc$:匹配字母 abc 并以 abc 结尾
  • {n,m}:匹配n 到m个字符长度
  • [ \f\r\t\n]:匹配所有的白字符
  • [A-Z]:匹配所有的大写字母
  • [a-zA-Z]:匹配所有的字母
  • [0-9.-]:匹配所有的数字,句号和减号
  • ^[a-z][0-9]$:匹配一个由一个小写字母和一位数字组成的字符串,比如"z2"、“t6"或"g7”,但不是"ab2"、“r2d3” 或"b52"的
  • ^[a-zA-Z0-9_]{1,}$:所有包含一个以上的字母、数字或下划线的字符串
  • ^[1-9][0-9]{0,}$:所有的正整数
  • ^-{0,1}[0-9]{1,}$ // 所有的整数
  • ^[-]?[0-9]+.?[0-9]+$ // 所有的浮点数

一些正则表达式示例:
在这里插入图片描述
校验数字的表达式:
在这里插入图片描述
校验字符的表达式:
在这里插入图片描述
特殊需求表达式:
在这里插入图片描述
在这里插入图片描述

参考内容:https://www.runoob.com/regexp/regexp-tutorial.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值