正则表达式
1.正则表达式介绍
正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。
2.正则表达式使用
2.1创建正则表达式
2.1.1 构建函数创建
var reg = new RegExp(/book/);
2.1.2 直接量
var reg1 = /book/;
2.2正则表达式参数
参数 | 说明 |
---|---|
i | 忽略大小写 |
g | 全局匹配 |
gi | 忽略大小写全局匹配 |
m | 多行匹配 |
2.3正则表达式组成
2.3.1边界符
边界符 | 说明 |
---|---|
^ | 匹配行首字符(以谁开始) |
$ | 匹配行尾字符(以谁结束) |
<script>
//reg1:包含qwe字符的字符串;
//reg2:qwe字符开头的字符串;
//reg3:长度为3只包含qwe字符的字符串;
var reg1 = /qwe/;
var reg2 = /^qwe/;
var reg3 = /^qwe$/;
console.log(reg1.test('qwe'));//true
console.log(reg1.test('qwerqqqq'));//true
console.log(reg1.test('qqqqqwer'));//true
console.log(reg1.test('qwqqwrr'));//false
console.log('----------------');
console.log(reg2.test('qwe'));//true
console.log(reg2.test('qwerqqqq'));//true
console.log(reg2.test('qqqqqwer'));//false
console.log(reg2.test('qwqqwrr'));//false
console.log('----------------');
console.log(reg3.test('qwe'));//true
console.log(reg3.test('qweqwe'));//false
console.log(reg3.test('qwerqqqq'));//false
console.log(reg3.test('qqqqqwer'));//false
console.log(reg3.test('qwqqwrr'));//false
</script>
2.3.2 []方括号
方括号:有一系列字符用中括号括起来,表示匹配其中的任一字符,多选一;
<script>
// []:任选其一,只能一个
var reg1 = /[abc]/;
var reg2 = /^[abc]$/;
console.log(reg1.test('a'));//true
console.log(reg1.test('b'));//true
console.log(reg1.test('abc'));//true
console.log(reg1.test('aaa'));//true
console.log(reg1.test('cddd'));//true
console.log(reg1.test('fffff'));//false
console.log('-------------------');
console.log(reg2.test('a'));//true
console.log(reg2.test('b'));//true
console.log(reg2.test('abc'));//false
console.log(reg2.test('aaa'));//false
console.log(reg2.test('cddd'));//false
console.log(reg2.test('fffff'));//false
console.log('-------------------');
//包含小写英文字母任意一个
var reg3 = /[a-z]/;
//包含大写英文字母任意一个
var reg4 = /[A-Z]/;
//包含第一个为小写字母,第二个为大写字母,第三个为数字
var reg5 = /[a-z][A-Z][0-9]/;
//包含大写字母小写字母0-9任意一个
var reg6 = /[a-zA-Z0-9]/;
//开头和结尾为大写字母小写字母0-9-_任意一个字符 长度为1
var reg7 = /^[a-zA-Z0-9-_]$/;
//开头和结尾不是大写字母小写字母0-9任意一个字符 长度为1
var reg8 = /^[^a-zA-Z0-9]$/; //如果中括号里面有^表示取反的意思
console.log(reg5.test('a'));//false
console.log(reg5.test('aB44444'));//true
console.log('-------------');
console.log(reg6.test('a'));//true
console.log(reg6.test('abc'));//true
console.log(reg6.test('aB9c'));//true
console.log(reg6.test('_-----'));//false
console.log('---------------------');
console.log(reg7.test('a'));//true
console.log(reg7.test('abc'));//false
console.log(reg7.test('aB9c'));//false
console.log(reg7.test('_-----'));//false
console.log('---------------------');
console.log(reg8.test('-'));//true
console.log(reg8.test('@'));//true
console.log(reg8.test('aB9c'));//false
console.log(reg8.test('_-----'));//false
</script>
2.3.3 量词符
量词 | 说明 |
---|---|
* | 出现0次或更多次 |
+ | 出现1次或更多次 |
? | 出现0次或1次 |
{n} | 出现n次 |
{n,} | 出现n次或更多次 |
{n,m} | 出现n到m次 |
<script>
var reg = /q/;
var reg1 = /^q$/;
var reg2 = /^q*$/;
var reg3 = /^q+$/;
var reg4 = /^q?$/;
// reg:字符串中包含q即可
console.log(reg.test(''));//false
console.log(reg.test('q'));//true
console.log(reg.test('qq'));//true
console.log(reg.test('qqq'));//true
console.log(reg.test('qqqw'));//true
console.log(reg.test('qqqwe'));//true
console.log('==================');
// reg1:字符串中只能包含一个q
console.log(reg1.test(''));//false
console.log(reg1.test('q'));//true
console.log(reg1.test('qq'));//false
console.log(reg1.test('qqq'));//false
console.log(reg1.test('qqqw'));//false
console.log(reg1.test('qqqwe'));//false
console.log('==================');
// reg2:字符串中只能包含q,并且为0个或者多个
console.log(reg2.test(''));//true
console.log(reg2.test('q'));//true
console.log(reg2.test('qq'));//true
console.log(reg2.test('qqq'));//true
console.log(reg2.test('qqqw'));//false
console.log(reg2.test('qqqwe'));//false
// reg3:字符串中只能包含q,并且为一个或者多个
console.log('==================');
console.log(reg3.test(''));//false
console.log(reg3.test('q'));//true
console.log(reg3.test('qq'));//true
console.log(reg3.test('qqq'));//true
console.log(reg3.test('qqqw'));//false
console.log(reg3.test('qqqwe'));//false
console.log('==================');
// reg3:字符串中只能包含q,并且为0个或者一个
console.log(reg4.test(''));//true
console.log(reg4.test('q'));//true
console.log(reg4.test('qq'));//false
console.log(reg4.test('qqq'));//false
console.log(reg4.test('qqqw'));//false
console.log(reg4.test('qqqwe'));//false
console.log('==================');
// {}第一个参数为最少重复次数,第二个值为最大重复次数,不填为没有限制
var reg5 = /^h{3}/;
var reg6 = /^h{3,}/;
var reg7 = /^h{,6}/;
var reg8 = /^h{3,6}$/;
console.log(reg5.test('h')); //false
console.log(reg5.test('hhh')); //true
console.log(reg5.test('hhhh')); //true
console.log(reg5.test('hhhpp')); //true
console.log(reg5.test('aahhhpp')); //false
console.log('===========================');
console.log(reg6.test('h')); //false
console.log(reg6.test('hhh')); //true
console.log(reg6.test('hhhh')); //true
console.log(reg6.test('hhhpp')); //true
console.log(reg6.test('aahhhpp')); //false
console.log('===========================');
console.log(reg7.test('h')); //false
console.log(reg7.test('hhh')); //false
console.log(reg7.test('hhhh')); //false
console.log(reg7.test('hhhpp')); //false
console.log(reg7.test('aahhhpp')); //false
console.log('===========================');
console.log(reg8.test('h')); //false
console.log(reg8.test('hhh')); //true
console.log(reg8.test('hhhh')); //true
console.log(reg8.test('hhhpp')); //false
console.log(reg8.test('aahhhpp')); //false
</script>
2.3.4 括号总结
括号类型 | 说明 |
---|---|
{}大括号 | 量词符. 里面表示重复次数 |
[]中括号 | 匹配方括号中的任意字符 |
()小括号 | 表示优先级 |
2.3.5 元字符
元字符 | 说明 |
---|---|
\d | 匹配数字,任何ASCII数字,等价于[0-9]匹配一个数字 |
\D | 匹配任意非数字的字符,除了ASCII数字之外的任何字符,等价于[^0-9 ] |
\w | 匹配字母或数字或下划线,等价于[ a-zA-Z0-9_ ] |
\W | 匹配任意不是字母,数字,下划线,等价于[ ^a-zA-Z0-9_ ] |
\s | 匹配任意的空白符[ /t/r/n/v/f ] |
\S | 匹配任意不是空白符的字符[^/t/r/n/v/f] |
. | 匹配除换行符和行结束符以外的任意单个字符 |
<script>
var str = 'asdfgh $%&# 4852 \n74d5a5dsa?\r@qq.com 785sa-dsada';
console.log(str.match(/\d/g));
console.log(str.match(/\D/g));
console.log(str.match(/\w/g));
console.log(str.match(/\W/g));
console.log(str.match(/\s/g));
console.log(str.match(/\S/g));
console.log(str.match(/./g));
console.log(str.match(/\./g));
console.log(str.match(/a|b/g));
// 手机号正则
var reg1 = /^1[3-9][0-9]{9}$/;
// 邮箱正则
var reg2 = /^\w+@\w+(-\w+)?(\.\w+)+$/;
var reg3 = /\w+@\w+-?\w+\.\w+(\.\w+)?/;
var reg4 = /\w+@[\w|-]+\.\w+(\.\w+)?/;
console.log(reg2.test('ziyuanyihe@hg-zn.com.cn'));
</script>