正则表达式-基础知识总结------彭记(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>