[a-z]表示所有字母
\d表示所有数字
[0-9]表示所有数字
正 则:str=abcssabc
表达式:regex=/[a-z]{3}\d{3}/ 表示: 3位字母,3位数字
regex.test(str)
regex.exec(str)
1、正则表达式:
<script type="text/javascript">
//正则书写方式
// var reg = /abc/m;进行多行匹配
var reg = /abc/;
var str = "sssabc";
//str.indexOf("abc")返回下标,找不到返回-1
//str.includes("abc")返回布尔值
//调用正则方法
//找到了返回true,找不到返回false
var flag = reg.test(str);
console.log(flag);//===>true
//.exec()返回匹配的第一个子串,找不到返回null
var ch = reg.exec(str);
console.log(ch);//===>abc
//调用字符串方法
//.match()返回匹配的第一个子串,找不到返回null
var ch1 = str.match(reg);
console.log(ch1);//===>abc
//.search()返回匹配的第一个子串的开始下标,下标找不到返回-1
//会把整个串看作1个
var ch2 = str.search(reg);
console.log(ch2);//===>3
</script>
2、i g m修饰符
<script type="text/javascript">
// var reg = new RegExp(/abc/,i)
// var reg = /abc/ig; // i大小写不敏感
// var str = "aBcsssabc";
// console.log(reg.exec(str));//===>aBc
var reg2 = /abc/g; // 进行全局匹配
var str2 = "abcsssabc";
console.log(reg2.lastIndex);//游标 ===>0
console.log(reg2.exec(str2));//['abc', index: 0, input: 'abcsssabc', groups: undefined]
console.log(reg2.exec(str2));//['abc', index: 6, input: 'abcsssabc', groups: undefined]
// //全局匹配,返回所有符合条件的子串
// console.log(str2.match(reg2));//===> ['abc', 'abc']
//以abc开头
// var reg3 = /^abc/mg; // 进行全局匹配
// var str3 = "abc\nabc";//\n换行
// console.log(str3.match(reg3));//===> ['abc', 'abc']
// var reg3 = /abc/g; // 进行全局匹配
// var str3 = "abc\nabc";//\n换行
// console.log(str3.match(reg3));//===> ['abc', 'abc']
</script>
3、方括号
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
//每个中括号代表一位
var reg = /[1ac]/g;
var str ="ss1dadcpr"
console.log(str.match(reg));//['1', 'a', 'c']
//返回1ac之外的字符
var reg2 = /[^1ac]/g;
var str2 ="ss1.,dadcpr"
console.log(str2.match(reg2));//['s', 's', '.', ',', 'd', 'd', 'p', 'r']
//返回数字
var reg3 = /[0-9]/g;
var str3 ="a1dg2"
console.log(str3.match(reg3));//['1', '2']
//返回数字和字母组合两位(数字在前)
var reg4 = /[0-9][a-z]/g;
var str4 ="a1dg2"
console.log(str4.match(reg4));//['1d']
//返回字母和数字组合两位(字母在前)
var reg5 = /[a-z][0-9]/g;
var str5 ="a1dg2"
console.log(str5.match(reg5));//['a1', 'g2']
//"|"或的用法
var reg6 = /blue|red/g;
var str6 ="bluered"
console.log(str6.match(reg6));//['blue', 'red']
//返回ab+数字,或者cd+数字
var reg7 = /(ab|cd)[0-6]/g;
var str7 ="ab8cd3"
console.log(str7.match(reg7));//['cd3']
//返回ab,或者cd+数字
var reg7 = /ab|cd[0-6]/g;
var str7 ="ab8cd3"
console.log(str7.match(reg7));//['ab', 'cd3']
</script>
</body>
</html>
4、元字符
<script type="text/javascript">
// .:除了换行和换行符
// \w:[0-9A-z_]
// \W:查找非单词字符[^0-9A-z_]
// \d:查找0-9[0-9]
// \D:查找非0-9[^0-9]
var reg = /[0-9A-z_]/g;
var str = "_123";
console.log(str.match(reg));//['_', '1', '2', '3']
var reg1 = /\w/g;
var str1 = "_123";
console.log(str1.match(reg1));//['_', '1', '2', '3']
var reg2 = /\d/g;//0-9
var str2 = "_q12";
console.log(str2.match(reg2));//['1', '2']
var reg2 = /\d\d/g;//0-90-9
var str2 = "_q12";
console.log(str2.match(reg2));//['12']
</script>
5、量词、贪婪匹配
<script type="text/javascript">
//量词
//n+匹配1到多位
var reg1 = /\d+/g;
var str1 = "_q12";
console.log(str1.match(reg1));//["12"]
//n*匹配0到多位
var reg1 = /bo*/g;//o至少要匹配到一位
var str1 = "b123";
console.log(str1.match(reg1));//['b']
//n?匹配0或1个
var reg2 = /bo?/g;
var str2 = "boooo123";
console.log(str2.match(reg2));//['bo']
//贪婪匹配(按最多的匹配)
//n{x}匹配x个
//n{x,}匹配>x个
//n{x,y}匹配x-y个
var reg3 = /bo{4}/g;//{4}代表4个o
var str3 = "boooo123";
console.log(str3.match(reg3));//['boooo']
var reg4 = /bo{2,}/g;
var str4 = "boooo123";
console.log(str4.match(reg4));//['boooo']
var reg5 = /bo{1,3}/g;
var str5 = "boooo123";
console.log(str5.match(reg5));//['booo']
//4个数字,4个字母组合
var reg6 = /\d{4}[A-z]{4}/;
var str6 = "123785boooo";
console.log(str6.match(reg6));//3785booo
console.log(reg6.test(str6));//true
//必须是4个数字开头,4个字母结尾的组合
var reg6 = /\d{4}[A-z]{4}$/;
var str6 = "123785boooo";
console.log(str6.match(reg6));//null
console.log(reg6.test(str6));//false
//以abc开头,以abc结尾
var reg7 = /^abc[\W\w]*abc$/
var str7 = "abc1235abc"
console.log(str7.match(reg7));//'abc1235abc'
</script>
6、非贪婪匹配
<script type="text/javascript">
//非贪婪匹配(按最少的匹配)
var reg = /\w{1,3}?/g;
var str = "123sgfd";
console.log(str.match(reg));//['1', '2', '3', 's', 'g', 'f', 'd']
var reg1 = /\w{2,3}?/g;
var str1 = "123sgfd";
console.log(str1.match(reg1));//['12', '3s', 'gf']
//匹配紧接着s的数字
var reg2 = /\d(?=s)/g;
var str2 = "1s2s";
console.log(str2.match(reg2));//['1', '2']
//正向预查(正向断言):匹配不紧接着s的数字
var reg3 = /\d(?!s)/g;
var str3 = "51s2s8987y3";
console.log(str3.match(reg3));//['5', '8', '9', '8', '7', '3']
//反向预查(反向断言):匹配不紧接着s的数字(2位)
var reg4 = /\d{2}(?!s)/g;
var str4 = "51s2s8987y3";
console.log(str4.match(reg4));//['89', '87']
</script>