辅助工具

  1. 在线匹配 http://tool.oschina.net/regex/
  2. 百度前端助手
  3. 本文配套例子码云地址

    (一)创建正则表达式对象

1.1 字面量方式
1.2 new 关键字
1.3 字符串全局替换

(二)常用匹配规则

2.1 元字符

  1. 任意字符 .
  2. \w 字母、数字、下划线
  3. \s 任意空白字符
  4. \d 匹配数字,等同于[0-9]
  5. \D 匹配非数字,等同于[^0-9]
  6. | 或匹配,如 /x|y/ 正则可匹配 x 或 y 两个字符
  7. ^ 匹配字符串的开始
  8. $ 匹配字符串的结束
  9. [abc] 表示 包含里面的任意一个

2.2 反义字符

  1. [^x] 匹配除“x”之外的所有字符,其中“x”可以为任意字符
  2. [^xyz] 同上,匹配除“x、y、z”之外的任意字符

(三)重复匹配

3.1 ? 重复出现零次或一次
3.2 + 重复出现一次或多次
3.3 * 重复出现零次或多次
3.4 {n} 重复出现 n 次
3.5 {n,} 至少重复出现 n 次
3.6 {m,n} 重复重现 m 到 n 次,其中,m<n

(四) 分组

4.1 用括号分组
4.2 分组的应用

正则表达式解读

  1. /^(0|86|17951)?(13[0-9]|15[012356789]|166|17[3678]|18[0-9]|14[57])[0-9]{8}$/

    1. 1.(0|86|17951)? 0,86,17951 可以是0次或1
    2. 2.(13[0-9]|15[012356789]|166|17[3678]|18[0-9]|14[57]|19[0-9]) 前三位
    3. - 13[0-9]
    4. - 15[012356789]
    5. - 166
    6. - 17[3678]
    7. - 18[0-9]
    8. - 14[57]
    9. - 19[0-9]
    10. 3.[0-9]{8}
  2. /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/ ```

  3. \w+ 数字,字母,下划线有1个或多个
  4. ([-+.]\w+) - + .任意一个; 数字,字母,下划线有1个或多个
  5. \w+
  6. ([-.]\w+)*
  7. .\w+
  8. ([-.]\w+)* ```

  9. /^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i ```

  10. ^https?:\/\/
  11. (([a-zA-Z0-9_-])+(.)?)*
  12. (:\d+)? 匹配端口号 ```

  13. (\/xxx*)*$
    ((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?) // 匹配请求参数 ?pageNum=1&type=reccomd&num=1

作业

  1. 有字符串 ‘?name=张三&age=20’; 创建一个对象,使用字符串方法或者正则将字符串的属性和值放入对象.
  2. 判断以下正则的值, 并自行验证 ```javascript // 说出正则表达式的含义,写出下面匹配的结果 /* 一元字符 **/ var reg = /b..k/; var str = “books”; var str2 = “boooks”; reg.test(str); reg.test(str2);

// var reg = /t\wq/; var str1 = “2222t2qkkk”; var str2 = “aaaaat$qbbbbb”; reg.test(str1); reg.test(str2);

var reg = /\Dook/; var str = “8ook”; reg.test(str);

var reg = /java\sscript/; var str = “study java script”; reg.test(str);

var reg = /javascript|html|css/; var str = “study javascript”; reg.test(str);

/* 匹配开始和结束 */ var reg = /^huruqing/; var str = “huruqing123456”; reg.test(str);

var reg = /^huruqing$/; var str = “huruqing123456”; reg.test(str);

/* 重复 */ var reg = /bo?k/; var str = “book”; reg.test(str);

var reg = /bo*k/; var str = “boook”; reg.test(str);

//+ 前面子表达式出现1次或多次 var reg = /bo+k/; var str = “boook”; reg.test(str);

//{m,n}最少出现m次,最多出现n次 var reg = /bo{2,4}k/; var str = “boooook”; reg.test(str);

//{m,}最少出现m次 var reg = /bo{2,}k/; var str = “boooook”; reg.test(str);

//{m}正好出现m次 var reg = /bo{2}k/; var str = “boook”; reg.test(str); /** 反义 **/ var reg = /o[^usb]t/; var str = “oat”; reg.test(str);

var reg = /[a-zA-Z0-9]ook/; var str = “8ook”; reg.test(str); ```