正则表达式

正则表达式:Regular Expression

描述一个字符串中字符出现规律的规则

语法:

  1. 一个固定的关键词原文,也是一种最简单的规则

  2. 字符集:规定一个字符上可用的备选字符列表

    何时:只要一位字符有多个备选字 [备选字列表]

    简写:如果备选字符列表连续,可用-省略中间字符

    [0-9] 一位数字

    [a-z] 一位小写字母

    [A-Z] 一位大写字母

    [A-Za-z] 一位字母

    [A-Za-z0-9] 一位字母或数字

    [\u4e00-\u9fa5] 一位汉字

    排除:[ ^xxx]

  3. 预定义字符集

    对常用字符集的简化:

    \d 一位数字

    \w [0-9A-Za-z_] 一位数字、字母、下划线

    \s 一位空字符,包括:空格,tab,…

    . 通配符

  4. 量词:专门规定一个字符集出现次数的规则

    2大类:

    1. 有明确数量边界

      {6,8} 至少6个,最多8个

      {6,} 至少6个,多了不限

      {6} 必须6个,不能多不能少

    2. 没有明确数量边界

      ?可有可无,最多一个 {0,1}

      *可有可无,多了不限 {0,}

      +至少一个,多了不限 {1,}

  5. 选择和分组

    选择: 或 |

    分组:将多个规则,用()包裹为一个整体

    ​ 为什么: 量词默认仅修饰相邻的前一个字符集

    ​ 何时: 只要一个量词,要修饰多个字符集时

    ​ 如何: (规则1规则2…)量词

  6. 匹配特殊位置

    ^ 字符串开头 比如:字符串开头的空字符 ^\s+

    $ 字符串结尾 比如:字符串结尾的空字符\s+¥

    \b 单词边界:^ $ 空格 标点符号 比如:查找单词no,不包含单词内的no \bno\b

eg:

​ 身份证号:15位数字 2位数字 一个数字或X或x (后三位整体可有可无,最多一个)

​ \d{15} ( \d\d [0-9Xx] )?

​ 手机号:+86 或者0086 可有可无,最多一次

​ 空字符 可有可无,多了无限

​ 1

​ 3,4,5,7,8 选一个

​ 9位数字

​ (\ +86|0086)?\s*1[34578]\d{9}

​ 严格地,1([358] [0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}/$

​ 微信 wei xin w x

​ (微|w(ei)?)\s*(信|x(in)?)

js的几个方法

验证:

​ reg.test(str) //表单验证常用,reg必须前加^,后加$

查找

  1. 判断是否包含符合正则条件的敏感词:

    var i=str.search(/reg/i) i表示不区分大小写 ignore

    查找str中第一个符合正则要求的关键词的位置,找不到 返回-1

  2. 获取所有关键词的内容

    var kwords=str.match(/正则/ig) g表示查找所有,不加g默认查找第一个 global

    查找str中所有关键词的内容,返回关键词数组,找不到 返回null

  3. 既查找关键词内容,又查找位置

    var arr=reg.exec(str) 在str中找下一个关键词的内容和位置

    返回值:arr[0] :本次查找内容

    ​ arr[index]:本次查找位置

替换:

  1. 简单替换: 将所有关键词,替换为统一的新内容

    str=str.replace(/reg/ig,‘新值’) 新值为"" :删除

  2. 高级替换: 根据每个关键词的不同,动态选择不同的新值替换

    str=str.replace(

    ​ /正则/ig,

    ​ function(kword){//每找到一个关键词,就自动调用该function

    ​ //kword会自动获得本次找到的一个关键词

    ​ return 根据kword的不同,返回不同的新值

    ​ }

    ​ )

    动态生成正则表达式

    var reg=new RegExp(“正则”,“ig”) 专门用于动态生成正则表达式

    此时的正则表达式支持js语法,注意:"" 中出现\或",改为\和"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值