正则表达式用于定义一些字符串的规则。
使用构造函数创建正则表达式
通过RegExp()
构造函数创建正则表达式的对象:
var reg = new RegExp("正则表达式", "匹配模式");
-
两个参数均为字符串类型,匹配模式可省略
-
正则表达式为要匹配的字符串中需包含的关键字
-
匹配模式有
i
忽略大小写,g
全局匹配
调用test()
方法检查字符串,返回一个布尔值:
var result = reg.test(str);
使用字面量创建正则表达式
通过字面量//
创建正则表达式的对象
var reg = /正则表达式/匹配模式;
调用test()
方法检查字符串:
var result = reg.test(str);
正则表达式语法
-
/ab/
表示是否包含 ab -
/a|b/
表示是否包含 a或b -
/[a-z]/
表示是否包含 任意小写字母/[A-Z]/
表示是否包含 任意大写字母/[A-z]/
表示是否包含 任意字母/[0-9]/
表示是否包含 任意数字 -
/[^ab]/
表示是否包含 除了ab以外的任意字符 -
/a{n}/
表示是否包含 n次的a/(abc){n}/
表示是否包含 n次的abc/a{m,n}/
表示是否包含 m-n次的a/a{m,}/
表示是否包含 m次以上的a -
/a+/
表示是否包含 至少一个的a,相当于有a即可/a*/
表示是否包含 0个及以上的a,相当于有无a均可/a?/
表示是否包含 0个或1个的a -
/^a/
表示是否 以a开头/a$/
表示是否 以a结尾/^ab$/
表示是否 完全符合字符串ab -
/\/
转义字符相关 -
/\w/
/\W/
/\d/
/\D/
/\s/
/\S/
/\b/
/\B/
特殊字符相关 -
……剩下仍有许多语法,应当去MDN查文档
练习
检测字符串是否为一个合法的国内手机号:
var phoneStr = "13123456789";
// 国内手机号应 开头为1,第二位为3-9,后面9位为0-9,共11位数字
var phoneReg = /^1[3-9][0-9]{9}$/;
var result = phoneReg.test(phoneStr);
检测字符串是否为一个合法的电子邮箱地址:
var email = "hello123.world@gmai.com.cn";
// 电子邮箱地址应为 开头任意3位以上字母数字下划线 可选.任意字母数字下划线 @ 任意字母数字 .任意2-5位字母 可选.任意2-5位字母
var emailReg = /^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/;
var result = emailReg.test(email);
支持正则的字符串方法
-
split()
将字符串拆分为一个数组通过正则表达式实现 根据任意字母将字符串拆分:
var result = str.split(/[A-z]/);
-
search()
搜索字符串中是否含有指定内容通过正则表达式实现 搜索多个指定内容:
var result = str.search(/a[bde]c/);
-
match()
从字符串中将符合条件的内容提取出来,返回一个数组通过正则表达式实现 提取多个符合条件的内容,需要添加匹配模式
g
全局匹配:var result = str.match(/[a-z]/g);
-
replace()
将字符串中的指定内容替换成新的内容通过正则表达式实现 替换多个指定内容,需要添加匹配模式
g
全局匹配:var result = str.replace(/[a-z]/g, "@")