正则表达式小结

最近学习了正则表达式,趁还热乎,写下这篇博客,记录一下。

一、正则表达式概念

正则表达式(英语:Regular Expression,在代码中常简写为regex)。
正则表达式是一个字符串,使用单个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。在开发中,正则表达式通常被用来检索、替换那些符合某个规则的文本,也可以用来提取字符串。几个常用的地方:验证输入(譬如手机号校验)、数据清洗(爬取网页并获取想要数据)、文字替换。

二、正则表达式的匹配规则

2.1常用字符

字符描述
[abc]代表匹配的是字符a 或 b 或 c
[^abc]代表匹配除了 a、b 或 c以外的任何字符
[a-zA-Z]代表匹配a 到 z 或 A 到 Z
[0-9]代表匹配0到9
[a-zA-Z_0-9]代表的字母或数字或下换线
.匹配一个任意字符。如果使用”.”的话,使用匹配规则”\.”来实现
\s匹配任意一个空白字符,空格、回车、制表符、换页符等都是空白字符。例如:a\sc 可以配 a\nc。
\d代表匹配0到9数字,相当于[0-9]
\w代表的字母或数字或下划线,相当于[a-zA-Z_0-9]

2.2定位符

字符描述
^匹配输入字符串开始的位置。
$匹配输入字符串结尾的位置。
\b匹配一个字边界,即字与空格间的位置。(相当于单词之间的空格 )
\B非字边界匹配。

2.3限定符

字符描述
*匹配前面的子表达式零次或多次。例如: “lo*” 能匹配 “l” 以及 “loo”或更多o。
+匹配前面的子表达式一次或多次。例如: “lo+” 能匹配 “lo” 以及 “loo”或更多o。
?匹配前面的子表达式零次或一次。例如: “lo?” 可以匹配 “l”,”lo”。
{n}n 是一个非负整数。匹配确定的 n 次。例如: “l{2}”” 能匹配 “Hello”的”l”。
{n,}n 是一个非负整数。至少匹配n 次。例如: “o{2,}” 不能匹配 “lo” 中的 “o”,但能匹配 “looooo” 中的所有”o”。可以与*,+ 等价使用 “{0,}”,”{1,}”。
{n,m}m和n均为非负整数,其中n<=m。最少匹配 n 次且最多匹配 m 次。例如:”o{1,3}” 将匹配 “looooool” 中的前三个”o”。”o{0,1}”” 等价于 “o?”。

2.4特殊字符

字符描述
( )标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用”\(“和”\)”。
.匹配除换行符”\n”之外的任何单字符。要匹配”.”,请使用”\.”。
[标记一个中括号表达式的开始。要匹配”[“,请使用”\[“。
\将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如: “n” 匹配字符”n”。”\n” 匹配换行符。序列 “\\” 匹配 “\”,而”\(” 则匹配”(“。
{标记限定符表达式的开始。要匹配”{“,请使用”\{“。
|指明两项之间的一个选择。要匹配”|”,请使用”\|”。

2.5 逻辑分支

字符描述
a|b匹配 a 或 b。例如:”abc|cde” 能匹配 “abc” 或 “cde”。”(g|f)ood” 则匹配 “good” 或 “food”。

2.6非打印符

字符描述
\cx匹配由x指明的控制字符。例如: \cM 匹配一个 Control-M 或回车符。
\f匹配一个换页符。
\n匹配一个换行符。
\r匹配一个回车符。
\s匹配任何空白字符,包括空格、制表符、换页符等等。
\S匹配任何非空白字符。
\t匹配一个制表符。
\v匹配一个垂直制表符。

三、常用正则举例

根据对应语言,譬如说Java,需要增加转义字符”\”来将”\”的功能启用

  1. 简单的手机号匹配: “^[1]\d{10}$”

    表示从头开始匹配,第一个数字为1,后面跟10个数字。

  2. 精确的手机号匹配: “^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])\d{8}$”

    匹配当前各大运营商对应的手机号。

  3. 身份证匹配: “^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9Xx])$”

    匹配目前使用的18位身份证。

  4. 使用字母,数字组成的20位密码: “^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$”
    匹配有字母(不区分大小写),数字组成的6-20位字符,一般用来验证密码。
  5. QQ号: “^[1-9][0-9]{4,}$”

    匹配5位意思的QQ号。

  6. 组织机构代码: “^[A-Za-z0-9]{8}-[A-Za-z0-9]{1}”

    匹配由8位数字或字母加上一个”-“再加一位数字或字母的组织机构代码

这里分享一个Java的正则表达式工具类:
链接: https://pan.baidu.com/s/1o9yMowa 密码: 8qvk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值