一、正则基本概念
1、一种规则、模式、文本处理工具
2、强大的字符串匹配工具
3、在js中常与字符串函数配合使用
二、js正则写法
正则在js中以正则对象存在;
(1)var re=new RegExp(正则表达式);
(2)var re=/正则表达式/;
三、正则的基本写法
1、开始结束符 ^ $
2、元字符
(1)任意字符 [abc] abc中的任意一个
(2)范围 [a-z] 字母a到c; [1-9] 数组1到9
(3)排除 [^a-z] 排除字母a-c
(4)任意字符 .
3、量词
(1) {n} 出现n次
(2) {n,m} 最少n次,最多m次
(3) + 任意次 >0次
(4) ? 最少0次 最多1次
(5) * 可有可无
4、转译字符
\d 数字 \D 非数字
\w 数字、字母、下滑线 \W 非数字 字母 下划线
\s 空白字符 \S 非空字符
\b
是单词边界 \B非单词边界
5、其他字符
i 忽略大小写 例 re=/a/i A或者a
g 全局搜索 例 re=/\d/g 全部数字
m 多行查找 例 re =/\d/m
四、字符串使用函数
1. str.search(re) //搜索匹配字符,返回位置,如果找不到,返回-1。
2. str.math(re) //搜索字符串,返回匹配字符数组
3. str.replace(re,'替换字符') //搜索字符串,替换匹配字符
五、正则对象方法
4. re.test(str) //测试字符串是否满足正则,返回布尔值
5. re.exec(str) //类似字符串方法match
六、正则的使用
1、示例:
----------------------------------------------------------
示例 测试邮箱格式
邮箱格式: 用户名 @ 邮箱名 . com/cn
字符类型: 字符 数字 下划线 @ 字母 数字 . 字母
正则字符: \w @ [a-z 0-9] [a-z]
量词: + 1 + +
re=/^\w+@[a-z 0-9]+\.[a-z]+$/g
-----------------------------------------------------------
2、贪婪特性:
获取所有html标签
re=/^<.+>/g; 会匹配第一个《 到最后一个> 中间内容全部当做.处理
改进:
re=/^<[^<]+>/$/g;
3、惰性匹配
通过在量词后面加个问号就能实现惰性匹配
如:var regex = /\d{2,5}/g; 改为 var regex = /\d{2,5}?/g;
4、位置配置
(1)正向先行断言 (?=p)
,其中p
是一个子模式,即p
前面的位置
(2)负向先行断言 (?!p)
六、常用正则表达式
1、中文校验
^[\\u4e00-\\u9fa5]{
0
,}$
2、密码强度
^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{
8
,
10
}$
3、数字字母下划线组成的字符串
^\\w+$
4、身份证
15位:^[
1
-
9
]\\d{
7
}((
0
\\d)|(
1
[
0
-
2
]))(([
0
|
1
|
2
]\\d)|
3
[
0
-
1
])\\d{
3
}$
18位:^[
1
-
9
]\\d{
5
}[
1
-
9
]\\d{
3
}((
0
\\d)|(
1
[
0
-
2
]))(([
0
|
1
|
2
]\\d)|
3
[
0
-
1
])\\d{
3
}([
0
-
9
]|X)$
5、日期yyyy-mm-dd
^(?:(?!
0000
)[
0
-
9
]{
4
}-(?:(?:
0
[
1
-
9
]|
1
[
0
-
2
])-(?:
0
[
1
-
9
]|
1
[
0
-
9
]|
2
[
0
-
8
])|(?:
0
[
13
-
9
]|
1
[
0
-
2
])-(?:
29
|
30
)| (?:
0
[
13578
]|
1
[
02
])-
31
)|(?:[
0
-
9
]{
2
}(?:
0
[
48
]|[
2468
][
048
]|[
13579
][
26
])|(?:
0
[
48
]|[
2468
][
048
]|[
13579
][
26
])
00
)-
02
-
29
)$