正则表达式
边界符
正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符。
边界符 | 说明 |
---|---|
^ | 表示匹配行首的文本(以谁开始) |
$ | 表示匹配行尾的文本(以谁结束) |
如果 ^
和 $
在一起,表示必须是 精确匹配(不能多不能少,只能是这些)。
字符类
字符类表示有一系列字符可供选择,只要匹配其中一个就可以了。所有可供选择的字符都放在方括号内。
[]
方括号
javascript
/[abc]/.test('andy')
// true
正则含义:后面的字符串只要包含 abc
中任意一个字符,都返回 true
。
[-]
方括号内部 -
范围符
javascript
/^[a-z]$/.test('c')
// true
含义:方括号内部加上 -
表示范围,这里表示 a
到 z
26个英文字母都可以。
[^]
方括号内部 取反符 ^
javascript
/[^abc]/.test('andy')
// false
方括号内部加上 ^
表示 取反,只要包含方括号内的字符,都返回 false
。
量词符
量词符用来设定 某个模式出现的次数。
量词 | 说明 |
---|---|
* | 重复次数 ≥ 0 |
+ | 重复次数 ≥ 1 |
? | 重复 0 次或 1 次 |
{n} | 重复 n 次 |
{n,} | 重复次数 ≥ n |
{n,n} | 重复 n 次到 m 次 |
预定义类
预定类 | 说明 |
---|---|
\\d | 匹配 0-9 之间的任一数字,相当于 [0-9] |
\\D | 匹配所有 0-9 以外的字符,相当于 [^0-9] |
\\w | 匹配任意的字母、数字和下划线,相当于 [A-Za-z0-9_] |
\\W | 除所有字母、数字和下划线以外的字符,相当于 [^A-Za-z0-9_] |
\\s | 匹配空格(包括换行符、制表符、空格符等),相等于[\\t\\r\\n\\v\\f] |
\\S | 匹配非空格的字符,相当于 [^\\t\\r\\n\\v\\f] |
正则表达式参数
当 replace
中第一个参数为正则表达式的时候,还有一个 switch
参数可选。
javascript
/表达式/[switch]
switch
(也称为修饰符)按照什么样的模式来匹配. 有三种值:
g
:全局匹配i
:忽略大小写gi
:全局匹配 + 忽略大小写
常见正则表达式
javascript
var 电话正则 = /^1[34578]\d{9}$/g = 15901234567
// ^ 表示匹配行首的文本(以谁开始)
// [] 限制用那些字符
// \d 匹配 0-9 之间的任一数字,相当于 [0-9]
// {}表示重复的次数
// $ 表示匹配行尾的文本(以谁结束)
// g 表示全局模式 匹配所有出现的字符
var QQ = /^[1-9][0-9]{4,9}$/g
// QQ号最少5位最多10位
// {4,9} 表示重复的次数的范围 4-9次
var 十六进制颜色 = /#?[0-9a-fA-F]{6}/g
// #48D1CC
// ? 前面的字符可有可无
var Email = /^([A-Za-z0-9_\-\.]+)@([A-Za-z0-9_\-\.]+)\.([A-Za-z]{2,6})$/g
// - . 需要转义
var url = /^((https?|ftp|file):\/\/)?([\da-z\.\-]+)\.([a-z\.]{2,6})/g
var HTML = /^<([a-z]+)([^>]+)*(>(.*)<\/1>|\s+\/>)$/gm
// m 匹配多行
// * 0到无穷大
// \s 表示空格
var 日期 = /^[0-9]{4}-(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])$/g = 2021 - 10 - 01
// 1[0-2] 匹配10-12
// [12][0-9] 匹配 10-29
// 3[01] 匹配 30 31