正则表达式,通俗易懂的介绍
目录
- 推荐正则表达式在线工具
- 到底什么是正则表达式?
- 正则表达式示例
- 正则表达式:字符串中匹配尺寸 .64x64 .数字x数字 这种规则
- 正则表达式:匹配汉字
- 正则表达式:匹配Email地址
- 正则表达式:匹配手机号码
- 正则表达式:匹配电话号码 ("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX)
- 正则表达式:匹配国内电话号码 (0511-4405222、021-87888822)
- 正则表达式:匹配身份证号(15位,18位 数字)
- 正则表达式:匹配日期格式(2020-01-01)
- 正则表达式:匹配日期格式(2020.01.01)
- 正则表达式:匹配日期的月份,一年12个月 月份(01-09和1-12)
- 正则表达式:匹配日期的天,一个月的31天(01-09和1-31)
- 正则表达式:匹配文件名是否是XML文件
- 正则表达式:匹配HTMl标记
- 正则表达式:匹配IP地址
- C# 利用正则表达式替换文本字符串
推荐正则表达式在线工具
到底什么是正则表达式?
正则表达式
(英语:Regular Expression,拉代码中常简写为regex、regexp或RE),又叫 正规表示式
、正规表示法
、正规表达式
、规则表达式
、常规表示法,是计算机科学个一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则个字符串。拉交关多文本编辑器里,正则表达式通常被用来检索、替换某些匹配某个模式个文本。
在编写处理字符串的程序或网页时,经常有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。
代码 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
代码/语法 | 说明 |
---|---|
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
代码/语法 | 说明 |
---|---|
\W | 匹配任意不是字母,数字,下划线,汉字的字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意非数字的字符 |
\B | 匹配不是单词开头或结束的位置 |
[^x] | 匹配除了x以外的任意字符 |
[^aeiou] | 匹配除了aeiou这几个字母以外的任意字符 |
正则表达式示例
正则表达式:数字 2位小数点 必须大于0
\d+(\.\d{0,2})?
正则表达式:数字 2位小数点 支持负数
-?\d+(\.\d{0,2})?
正则表达式:字符串中匹配尺寸 .64x64 .数字x数字
这种规则
\.\d+[Xx]\d+
说明
\. | \d+ | [Xx] | \d+ |
匹配字符 . | 一位或多位数字 | 字符X或小写字符x | 一位或多位数字 |
正则表达式:匹配汉字
^[\u4e00-\u9fa5]{0,}$
正则表达式匹配空行
\n(\n)*( )*(\n)*\n
正则表达式:匹配Email地址
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
正则表达式:匹配手机号码
^((13[0-9])|(14[5-9])|(15([0-3]|[5-9]))|(16[6-7])|(17[1-8])|(18[0-9])|(19[1|3])|(19[5|6])|(19[8|9]))\d{8}$
三大运营商最新号段 合作版 2021-03,如果有更新未兼容,请联系站长更新,谢谢 !!!
* 移动号段:
* 134 135 136 137 138 139 147 148 150 151 152 157 158 159 172 178 182 183 184 187 188 195 198
* 联通号段:
* 130 131 132 145 146 155 156 166 167 171 175 176 185 186 196
* 电信号段:
* 133 149 153 173 174 177 180 181 189 191 193 199
* 虚拟运营商:
* 162 165 167 170 171
* 13开头排序:(0-9)(134 135 136 137 138 139 130 131 132 133)
* 14开头排序:(5-9)(147 148 145 146 149)
* 15开头排序:(0-3|5-9)(150 151 152 157 158 159 155 156 153)
* 16开头排序:(6-7)(166 167)
* 17开头排序:(1-8)(172 178 171 175 176 173 174 177)
* 18开头排序:(0-9)(182 183 184 187 188 185 186 180 181 189)
* 19开头排序:(1|3|5|6|8|9)(195 198 196 191 193 199)
*
正则表达式:匹配电话号码 ("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX)
^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
正则表达式:匹配国内电话号码 (0511-4405222、021-87888822)
\d{3}-\d{8}|\d{4}-\d{7}
正则表达式:匹配身份证号(15位,18位 数字)
^\d{15}|\d{18}$
正则表达式:匹配日期格式(2020-01-01)
^\d{4}-\d{1,2}-\d{1,2}
正则表达式:匹配日期格式(2020.01.01)
\d{4}\.\d{1,2}\.\d{1,2}
正则表达式:匹配日期的月份,一年12个月 月份(01-09和1-12)
^(0?[1-9]|1[0-2])$
正则表达式:匹配日期的天,一个月的31天(01-09和1-31)
^((0?[1-9])|((1|2)[0-9])|30|31)$
正则表达式:匹配文件名是否是XML文件
^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
正则表达式:匹配HTMl标记
<(\S*?)[^>]*>.*?</\1>|<.*? />
(网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)
正则表达式:匹配IP地址
\d+\.\d+\.\d+\.\d+
((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))
C# 利用正则表达式替换文本字符串
引用命名空间:System.Text.RegularExpressions
string url ="O1CN01uUrvzQ1FLIp9kbfEF_!!999060470-0-cib.64x64.jpg"; Regex myRegex = new Regex(@"\.\d+[Xx]\d+", RegexOptions.IgnoreCase); url = myRegex.Replace(url, "");
C# 利用正则表达式查找所有匹配的文本字符串
Regex regex = new Regex(@"\d{4}\.\d{1,2}\.\d{1,2}"); var ms = regex.Matches(node.InnerText); if (ms.Count > 0) { data.Date1 = ms[0].Value; } if (ms.Count > 1) { data.Date2 = ms[1].Value; }
JS正则表达式匹配数据
var str = "万达:127.0.0.1\n时代丽阳:192.168.0.125"
var reg = /(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)/g
var tmp = str.match(reg)
// ['127.0.0.1', '192.168.0.125']