正则表达式定义方法:
1、直接量定义法:
/表达式/修饰符
2、正则对象方法:
var reg = new RegExp( 表达式 , 修饰符 );
修饰符
i 忽略大小写
m 多行匹配
g 全文匹配
指定匹配位置
^ 匹配字符串的开头
$ 匹配字符串的末尾
字符类
[…] 匹配方括号内的任意字符
[^…]匹配不在方括号内的任意字符
. 除了换行符以外任意字符
\w 代表的是字母数字下划线 [a-zA-Z0-9_]
\W 代表的是非字母数字下划线
\d 代表数字 [0-9]
\D 非数字 [^0-9]
\s 空格字符
\S 非空格字符
\b 单词的边界(以非数字字母下划线做分割)
\B 非字边界匹配。
字母和数字字符
\t 制表符(Tab)
\n 换行符
\r 回车符
选择
| 或者
分组
() 将多个匹配项组合为一个整体
设置重复的次数
{n} 匹配前一项n次
{n,m} 匹配前一项最少n次,最多m次
{n,} 匹配前一项最少n次
? 匹配0到1次 {0,1}
+ 匹配1到多次 {1,}
* 匹配0到多次 {0,}
注:常用需要转义的字符: [ ] {} () ? * + / ^ $ .
检测正则表达式的方法
1、test()正则方法:判断字符串是否与正则相匹配
reg.test(str)
匹配成功返回:true
匹配失败返回:false
2、exec()正则方法:判断字符串是否与正则相匹配
reg.exec(str)
匹配成功返回:数组
匹配失败返回:null
数组说明:
数组的第一个元素:匹配的内容
数组的index元素: 匹配内容的第一个字符索引下标
数组的input元素: 原始字符串
注:引用index元素用reg.exec(str).index
3、search()字符串方法:找出与正则匹配的字符串的下标
(不支持全局匹配)(不能用g)
str.search(reg)
匹配成功返回:下标
匹配失败返回:-1
4、replace()字符串方法:替换符合正则表达式的字符串
str.replace(reg,“替换的字符”);
匹配成功返回:替换后的新字符串,原字符串不变
匹配失败返回:原字符串
5、match()字符串方法:判断字符串是否与正则相匹配
str.match(reg)
匹配成功返回:数组
匹配失败返回:null
数组说明:
匹配到的字符
注:若只匹配到一个字符时结果与exec()方法返回值相同
注:引用index元素用str.match(reg).index
常用的正则表达式:
用户名
/1{3,16}
/
密
码
/
[
a
−
z
0
−
9
−
]
6
,
18
/ 密码 /^[a-z0-9_-]{6,18}
/密码/[a−z0−9−]6,18/
电子邮箱
/^([a-z0-9_.-]+)@([\da-z.-]+).([a-z.]{2,6})KaTeX parse error: Expected 'EOF', got '\d' at position 10: / /^[a-z\̲d̲]+(\.[a-z\d]+)*…/
URL
/^(https??/)?([\da-z.-]+).([a-z.]{2,6})([/\w .-])/?$/
a-z0-9_- ↩︎