正则表达式(RegExp)

1、什么是正则表达式

1.1 什么叫“正则”
—规则、模式
—强大的字符串匹配工具……
1.2 正则的写法
–new RegExp(“a”,”ig”),需要传参只能用这种方案。
–/a/

2、正则表达式常用方法

2.1 test
—字符串判断
—返回真假
—正则.test(字符串)
—例子:是否有不是数字的字符
2.2 search
字符串搜索
–返回出现的位置
–字符串.search(正则)
–忽略大小写:i——ignore
2.3 match
获取匹配的项目,
–返回数组
–量词:+
–全局匹配:g——global
–例子:找出所有数字
2.4 replace
替换所有匹配
–返回替换后的字符串
–字符串.replace(正则,想替换的)
–例子:敏感词过滤
-例子:统计字符串中每个字符的出现频率
/**
统计字符串中每个字符的出现频率,返回一个 Object,key 为统计字符,value 为出现频率

  1. 不限制 key 的顺序
  2. 输入的字符串参数不会为空
  3. 忽略空白字符
    输入例子:
    count(‘hello world’)
    输出例子:
    {h: 1, e: 1, l: 3, o: 2, w: 1, r: 1, d: 1}
    */
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function count_2(str) {
    var obj = {};
    // \S:非空白符
    str.replace(/\S/g,function(s){
    !obj[s]?obj[s]=1:obj[s]++;
    })
    return obj;
    }
    console.log(count_2('hello world'));

–匹配子项
–例子:日期格式化

3、正则表达式字符类

3.1 任意字符
-[abc]
–例子:o[usb]t——obt、ost、out
3.2 范围
-[a-z]、[0-9]
–例子:id[0-9]——id0、id5
3.3 排除
-[^a]
–例子:o[^0-9]t——oat、o?t、o t
3.4 组合
-[a-z0-9A-Z]
实例:偷小说
过滤HTML标签
–自定义innerText方法

4、转义字符

转义字符
.(点)——任意字符
\d([0-9])、\w([a-zA-Z0-9_])、\s(空白符) 、\b(单词边界)
\D([^\d])、\W([^\w])、\S([^\s]) 、\B([^\b])
\1 重复子项
例子
–获取class元素
–找重复项最多的字符和个数

5、量词

5.1 什么是量词
出现的次数
{n,m},至少出现n次,最多m次
例子:查找QQ号
5.2 常用量词
{m,n}:m到n次
{n,}:至少n次
{n}:正好n次
*:任意次 {0,}
?:零次或一次 {0,1}
+:一次或任意次{1,}

正则收尾
^ 开始
$ 结束
例子
–是不是QQ号
–去掉前后空格

6、常用正则例子

高级表单校验
匹配中文:[\u4e00-\u9fa5]
行首行尾空格:^\s|\s$
Email:^\w+@[a-z0-9]+(.[a-z]+){1,3}$

网址:[a-zA-z]+://[^\s]*
QQ号:[1-9][0-9]{4,9}
邮政编码:[1-9]\d{5}
身份证:[1-9]\d{14}|[1-9]\d{17}|[1-9]\d{16}x

7、正则与面向对象

把方法包在一个空间里
有人管他叫——命名空间
在公司里,把同一类方法,包在一起
JSON的使用
把之前的方法,包在一起

参考链接

MDN RegExp

本文地址: https://lxchuan12.github.io/2016/09/22/20160922-RegExp/