量词符
量词符:用来设定某个模式出现的次数。
var reg = /^a*$/; // * 相当于>=0,可以出现0次或很多次
var reg = /^a+$/; // + 相当于>=1,可以出现1次或很多次
var reg = /^a?$/; // ? 相当于1||0,可以出现0次或1次
var reg = /^a{3}$/; // {3}就是重复a字符3次
var reg = /^a{3,}$/; // {3,}就是重复a字符 大于等于3次
var reg = /^a{3,16}$/; // {3,16}就是重复a字符 大于等于3次 小于等于16次
【案例演示】:允许用户输入6~16位的用户名
var reg = /^[a-zA-Z0-9_-]$/;
var reg = /^[a-zA-Z0-9_-]{6,16}$/;
括号字符
1.改变限定符的范围
正则表达式:catch|er
可匹配的结果:catch、er
正则表达式:cat(ch|er)
可匹配的结果:catch、cater
分组:使用小括号可以进行分组,当小括号后面有量词符时,就表示对整个组进行操作。
分组前
正则表达式:abc{2}
可匹配的结果:abcc
分组后
正则表达式: a(bc){2}
可匹配的结果:abcbc
2.捕获与非捕获
捕获:使用小括号可以进行分组,当小括号后面有量词符时,就表示对整个组进行操作。
3.贪婪匹配和懒惰匹配
贪婪匹配:匹配尽可能多的字符
懒惰匹配:匹配尽可能少的字符
正则匹配默认是贪婪匹配,通过 “?”符号实现惰性匹配。
var str = "webWEBWebwEb";
var reg1 = /w.*b/gi; //贪婪匹配
console.log(reg1.exec(str)); //返回值为数组,数组中包括匹配的字符串、索引、输入的字符串
var reg2 = /w.*?b/gi; //懒惰匹配
console.log(reg2.exec(str));
4.反向引用
反向引用:获取存放在缓存区内的子表达式的捕获内容。
var str = "13335 12345 56668";
var reg3 = /(\d)\1\1/gi;
console.log(str.match(reg3));
5.正则表达式的优先级
正则表达式优先级:正则表达式各种符号的优先级,由高到低排列。
6.【案例】身份证号码的验证
<body>
<form id="form">
身份证号:<input type="text" name="card">
</form>
<div id="result"></div>
<script>
let result = document.querySelector("#result");
let inputs = document.getElementsByTagName("input");
inputs.card.addEventListener("blur",function(){
// 创建正则表达式对象
let idCard = /^\d{15}$|^\d{17}([0-9]|X)$/;
//获取用户输入的身份证号码
let userId = inputs.card.value;
//进行验证
if(idCard.test(userId)){
result.innerHTML = "验证通过";
}else{
result.innerHTML = "身份证号码有误";
}
})
</script>
</body>
String类中的方法
1.match()
match()
方法:根据正则匹配出所有符合要求的内容匹配成功后将其保存到数组中,匹配失败则返回false
。
var str = "It's is the shorthand of it is";
var reg1 = /it/gi;
console.log(str.match(reg1));
var reg2 = /^it/gi;
console.log(str.match(reg2));
var reg3 = /s/gi;
console.log(str.match(reg3));
var reg4 = /s$/gi;
console.log(str.match(reg4));
输出结果如下:
2.search()
serach()方法:返回指定模式的字串在字符串中首次出现的位置,相对于indexOf()方法来说功能更强大。
var str = "123*abc.456";
console.log(str.search("/.*/"));
3.split()
split()方法:根据指定的分隔符将一个字符串分割成字符串数组,其分割后的字符串数组不包括分隔符。
var str = "test@qq.com";
var reg = /[@|.]/;
var arr = str.split(reg);
console.log(arr); //输出结果为[ 'test', 'qq', 'com' ]
4.replace()
replace()方法:字符串替换,参数可以是字符串或正则表达式。