RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。

1. 语法

正则的语法 /keyword/


2. 修饰符

2-1. i

i忽略大小写

2-2. g

g全局替换,执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)

  1. var str = "hellLo";
  2. console.log(str.replace(/l/ig,"*"));//he***o

3. 方括号

方括号用于查找某个范围内的字符:

表达式 描述
[abc] 查找方括号之间的任何字符。
[^abc] 查找不在方括号之间的字符。
[0-9] 查找 0 至 9 的数字。
[a-z] 查找小写字符。
[A-Z] 查找大写字符。
[A-z] 查找大小写字符。
(red|blue|green) 查找任何指定的选项。

3-1. [^0-9]

  1. var str = "hello8289283921";
  2. /* [0-9] */
  3. var reg = /[0-9]/g;
  4. console.log(str.replace(reg,"*"))//hello**********

3-2. [^0-9]

非数字字符

  1. var str = "fdsfds12121dsf";
  2. var reg = /[^0-9]/g;
  3. console.log(str.replace(reg,""));//12121

3-3. 备选字符集

  1. // 备选字符集: [海天] 特点:多选一
  2. /* 定义:规定某一位字符的备选字符列表 */
  3. var str = "上海,上天,上哪里去"; //"*"
  4. var reg = /上[海天]/g
  5. console.log(str.replace(reg,"*"))//*,*,上哪里去
  1. // 上,天,那 规定某一位字符的备选字符列表
  2. var reg =/[上天哪]/g
  3. var str ="上海,哪里去,天";
  4. console.log(str.replace(reg,"*"))//*海,*里去,*

3-4. |

或,没有“|”则连接为一个字符串

  1. var str ="我去,我草,你这游戏打的太牛逼了,去草地里";
  2. var reg = /我[去草]|牛逼/g
  3. console.log(str.replace(reg,"*"))//*,*,你这游戏打的太*了,去草地里

4. 元字符

也叫预定义字符集:针对常用的备选字符集提供的简化符号
元字符(Metacharacter)是拥有特殊含义的字符:

元字符 描述
. 查找单个字符,除了换行和行结束符。
\w 查找单词字符。同[0-9A-z_]
\W 查找非单词字符。
\d(digital) 查找数字。
\D 查找非数字字符。
\s(space) 查找空白字符。
\S 查找非空白字符。

4-1. \d , \w , .

  1. /* \d [0-9] */
  2. var str ="_jhfdl2323_";
  3. var reg = /\d/g;
  4. console.log(str.replace(reg,"*"))//_jhfdl****_
  5. /* \w [0-9a-zA-Z_] */
  6. /* . 所有的字符 */
  7. console.log(str.replace(/\w/g,"*"))//***********
  8. console.log(str.replace(/./g,"*"))//***********

5. 量词

匹配规定数量的字符串

量词 描述
n+ 匹配任何包含至少一个 n 的字符串。>=1
n* 匹配任何包含零个或多个 n 的字符串。>=0
n? 匹配任何包含零个或一个 n 的字符串。0,1
n{X} 匹配包含 X 个 n 的序列的字符串。x
n{X,Y} 匹配包含 X 至 Y 个 n 的序列的字符串。x~y
n{X,} 匹配包含至少 X 个 n 的序列的字符串。>=x
n$ 匹配任何结尾为 n 的字符串。
^n 匹配任何开头为 n 的字符串。
?=n 匹配任何其后紧接指定字符串 n 的字符串。
?!n 匹配任何其后没有紧接指定字符串 n 的字符串。

5-1. {m,n}

只要大于m,test()结果都为true,所有不能限制最大数量

  1. var pwd = "12115fdsfsd"; // 密码5-7num
  2. var reg = /[0-9]{5,7}/;
  3. console.log(reg.test(pwd));//true

5-2. 贪婪,懒惰模式

给量词的情况下 默认取最大值 默认是贪婪的 在后面加“?”,为懒惰模式,取最小值

  1. var str = "2323hello";
  2. var reg1 = /\d{3,6}?/;
  3. var reg2 = /\d{3,6}/;
  4. console.log(str1.replace(reg,"*"))//*3hello
  5. console.log(str2.replace(reg,"*"))//*hello

5-3. \ 转义字符

处理特殊字符

  1. var str = "https://www.baidu.com"
  2. var s = "http://www.baidu.com"
  3. var reg = /(https|http):\/\/[w]{3}\.baidu\.com/;
  4. console.log(reg.test(s))

5-4. ^…$ 严格匹配

  1. // 电话号码的正则
  2. var reg = /^1[3-9]\d{9}$/;
  3. var str = "13971181102";
  4. console.log(reg.test(str))

5-5. ?,+,*

  1. /*
  2. ? 0-1 {0,1}
  3. + 大于等于1个 {1,}
  4. * {0,}
  5. */
  6. var str = "hje1";
  7. var reg =/\d+/
  8. console.log(reg.test(str))

5-6.去除字符串前后空格

  1. var str = " hello ";
  2. var reg = /^\s+|\s+$/g;
  3. var arr = [];
  4. var res = str.replace(reg,"");
  5. arr.push(res);
  6. console.log(arr);//["hello"]

trim()

trim() 方法删除字符串两端的空白符:

  1. var str = " hello ";
  2. var arr = [];
  3. arr.push(str.trim());
  4. console.log(arr);

5-7. 过滤标签

  1. /* 过滤标签*/
  2. var str = "<p>我是</p>。<div>是</div>"
  3. var reg =/<[^<>]+>/g;
  4. console.log(str.replace(reg,""));

6. RegExp 对象方法

6-1. test()

检索字符串中指定的值。返回 true 或 false。
test() 方法用于检测一个字符串是否匹配某个模式.
RegExpObject.test(string)
string:要检测的字符串。
如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false。

  1. // 规则字符串中字符出现规律的表达式
  2. /* reg.test(str) */
  3. var str = "hello";
  4. var reg =/l/g;
  5. console.log(str.replace(reg,"*"));//he**o
  6. console.log(reg.test(str))//true

7. 支持正则表达式的 String 对象的方法

7-1. search()

检索与正则表达式相匹配的值。

7-2. match()

找到一个或多个正则表达式的匹配。

  1. var str = "https://movie.douban.com/subject/1292052/";
  2. /* 只获取数字 */
  3. var reg = /\d+/;
  4. /* match */
  5. var res = str.match(reg);
  6. console.log(res[0])

7-3. replace()

替换与正则表达式匹配的子串。

  1. var str = "https://movie.douban.com/subject/1292052/";
  2. /* 只获取数字 */
  3. var reg = /[^\d]/g
  4. console.log(str.replace(reg,""))

7-4. split()

把字符串分割为字符串数组。