正则表达式-基础知识总结------彭记(09)
正则表达式
构造函数法:
-new RegExp(正则规则,匹配模式)
-new RegExp(正则规则)
字面量法:
-/开头 /结尾 中间放你想要放的正则规则
-正则规则里面千万不要出现空格,除非你就是想要验证空格
var reg =/规则/
匹配方法:
-test 方法--用来给正则对象匹配字符串
-正则对象的方法--正则对象。test(字符串)
-用正则规则去匹配字符串,如果字符串符合规则,就会返回true,否则返回false
元字符:
“.” 匹配除了\r\n以外的任意单个字符
“\” 转义字符--把特殊符号的特殊意义去除,变成普通字符
“|” 或者--表示竖线左右两边的表达式或者字符,任意出现一次
“()” 提高优先级和分组
量词:
“*” 指*之前的符号或者表达式出现任意多次>=0...{0,}
“+” 表示+之前的字符或者表达式出现>=1次 至少一次...{1,}
“?” 表示?之前的字符或者表达式出现0或1次...{0,1}
范围量词:“{}”
“{n}” 表示之前的符号或者表达式出现n次
“{n,}” 表示之前的符号或者表达式出现至少n次
“{n,m}” 表示之前的符号或者表达式出现n~m次
开头--“^”表示必须以某个字符或者某个表达式开头--严格模式
结尾--“$”表示必须以,某个字符或者表达式结尾
//必须以a开头,必须以a结尾
var reg =/^a.*a$/;
范围:表示规定一个字符出现的范围
“[ ]” 表示范围,其中的一种用法
1.[0-9] 表示数字
2.[a-z] 表示小写字母
3.[A-Z] 表示大写字母
“[ ]” 也可以作为转义字符使用
用法--[想要转义的字符]
取反
[^0-9]--表示不再数字范围内,非数字
// var reg1 = /[0-9]/; //出现数字即可 // console.log(reg1.test("aa")); // console.log(reg1.test("aa1")); // // var reg2 = /[a-z]/; //出现小写字母即可 // console.log(reg2.test("1223")); // console.log(reg2.test("A1223Z")); // console.log(reg2.test("a1223Z")); //不是从0-9,想从 1 - 5 // var reg = /[1-5]/; //要求出现1-5之间的任意数字 // console.log(reg.test("00000000")); // console.log(reg.test("000001000")); // console.log(reg.test("000004000")); // console.log(reg.test("00000500")); // console.log(reg.test("00000600")); //特殊集合 -- 想要a c g i f 允许将多个字符组合起来形成一个新的字符集合 // var reg = /[acgif]/; //表示其中的字符出现任意一个即可 // console.log(reg.test("456")); // console.log(reg.test("45a6")); // console.log(reg.test("45i6")); // console.log(reg.test("beh")); // var reg = /[.]/; // console.log(reg.test("a.")); // console.log(reg.test("ab")); var reg = /[^0-9]/; console.log(reg.test("125")); console.log(reg.test("125a")); console.log(reg.test("125!"));
预定类:
\d 和 [0-9] 同样的意义
\D 和[^0-9]
\s 表示空白字符
\S 表示非空白字符
注意点:空字符串,既不是空白,也不是非空白
\w ===[0-9a-zA-Z] 包含数字和字母
\W ===[^0-9a-zA-Z] 不包含数字和字母
小练习
<script>
/**
* 正则表达式书写顺序
*
* 1 看到需求,找出需求的规律
* 2 初级阶段,先按照自己的想法把自己发现的规律表达出来
* 先不要纠结正则表达式的严谨性,不要想着各个方面都能考虑到
* 先按照自己的想法写,每个人的想法不同,写出的正则可能同,重在练习
* 3 用写好的正则去匹配需求中一些常见的例子
*
* 4 将来在工作中,也不一定是自己写,但是要能看懂,将来改需求的时候能自己修改正则
*/
//验证电话号码
// 010-12345678
// 0313-1234567
/**
* 0 开头
* 有3位或者4位区号
* 区号和号码中间用 - 隔开
* 后面有7或者8位的号码
*/
// var regTel1 = /^[0][0-9]{2,3}[-][0-9]{7,8}$/;
// var regTel2 = /^[0]([0-9]{2}[-][0-9]{8}$)|([0-9]{3}[-][0-9]{7}$)/;
//
// console.log(regTel1.test("010-12345678"));
// console.log(regTel2.test("010-12345678"));
// console.log(regTel1.test("0313-1234567"));
// console.log(regTel2.test("0313-1234567"));
//验证QQ号
// 78224116
/**
* 纯数字
* 5-11位
* 不能以0开头
*/
// var regQQ = /^[1-9][0-9]{4,10}$/;
// console.log(regQQ.test("78224116"));
//手机号码
//号段 13[0-9] 14[57] 15[0-9] 18[0-9]
//
/**
* 都是以1开头
* 区号
* 总长度:11
*/
// var regPhone = /^[1](([3][0-9])|([4][57])|([5][0-9])|([8][0-9]))[0-9]{8}$/;
// console.log(regPhone.test("18877665543"));
//邮箱的正则表达式:
//hanmeimei_lilin-cool888.en@yahoo126.com.cn
// 1213456@163.com .us
// 1223456@qq.com
// abc@163.com.cn
/**
* 必然有@符号 还有.符号
*
* @前面 可以使数字、字母、 - _ .
* @后面 跟着数字、字母
* .的后面 数字字母 .
// */
// var regMail = /[0-9a-zA-Z_.-]+[@][0-9a-zA-Z]+[.][0-9a-zA-Z]+([.]{0}|[.][0-9a-zA-Z])/;
// console.log(regMail.test("hanmeimei_lilin-cool888.en@yahoo126.com.cn"));
/*
* 请写一个正则表达式匹配身份证号码
* 分两种情况
* 以4开头
* 15位的数字
* 18位,最后一个可以是数字,也可以是x
*/
// var regsfz = /^[4]([0-9]{14})|([0-9]{16}([0-9]|[xX]))$/;
// console.log(regsfz.test("450066199112031234"));
</script>

浙公网安备 33010602011771号