正则的简单学习

Posted on 2020-05-31 13:32  妖娆的油条  阅读(129)  评论(0编辑  收藏  举报

官网

作用:

  1. 正则表达式描述了字符串的匹配模式,可以用来检测某个串是否含有某字串,替换或者提取该字串
  2. 也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式
  3. 正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。
  4. 正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式

普通字符\占位符

包括所有的打印和非打印字符。这包括所有大小写字母、所有数字、标点符号和一些其他符号

  1. 非打印字符
    /\t/ ---匹配制表符
    /\S/ ----匹配任何非空白字符(spaces 、tabs 、line breaks)

限定符

  1. 特殊字符
    • :已什么结尾,如果要表示本身,需要用 $
    • (): 描述一个子表达式的开始和结束位置 ( 和 )分别表示括号的两边
    • :表示前面的表达式匹配0次或者多次
      /^sd(aj)
      / //匹配以sd开头的,qie包含0或者多个aj的字符串-----带空格的一组字母也是一个字符串
    • +:表示前面的表达式出现一次或者多次
    • .:匹配换行符外的任意单字符
    • []:匹配所有在中括号中出现的字符,表示一个占位符
      /[adf]/ //字符串中所有的 a d f都会被选中
    • ?:前面匹配的字符出现0或者一次
      /colou?r/
      color colour
    • \ : 将下一个字符标记为特殊字符(\t) 、或者原字符(()
    • ^ : 匹配字符串开始位置
    • $ : 匹配字符串结束位置
    • {} :限定符表达式
  2. {n} :
    • 某字符匹配n次
      var reg=/o{2}/
      var str="hooc hocdf"
      //匹配上的只有前面的 'oo'
    • {n,} :至少匹配n次
    • {n,m} : 至少匹配n次,最多匹配m次

修饰符

  1. i :对大小写不敏感匹配
    /w3ccool/i
    //以下两个字符串都能匹配
    'w3ccool'
    'w3CCool'

  2. g: 查找所有匹配,而不仅仅在找到第一个匹配的结果后停止
    /w3ccool/g
    'w3ccool w3ccool'
    //在匹配玩第一个w3ccool后还会匹配第二个,第三个...
    //如果没有 g ,只会匹配第一个满足条件的字串

  3. m:执行多行匹配。

练习

  1. /[4-9][0-2]*/ ,匹配字符串 var str="1233450ed3 "
  • 一个[]修饰符表示一个占位符
  • 上面的正则匹配规则表示:第一个数字是3-9之间的数字;第二个数字没有或者是0-2之间的数字
    • 匹配结果:"1233450 ed3 "
  1. /\d+$/ :有一个或者多个数字并且以数字结尾

  2. /[0-9][1-9]+[0-9] / :匹配正整数

  3. (([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])):正浮点数

  4. 密码:长度为8-10位数,以字母开头,包含数字、下划线
    /[1]\w{7,9}$/

  5. 只能由汉字
    /[2]+$/

  6. 邮箱验证:
    /^\w+([+-.]\w)@\w+([-.]\w+).\w+$/
    //([-.]\w+)* 表示一个子集合出现任意次。子集规则是:包含 -或者非空格的任意单字符,后面是一个以上的字母、数字或者下划线

  7. url地址验证:
    /^http://([\w-]+.)+[\w-]+(/[\w-./?%&=]*)?$/

  8. 电话号码验证:请参考:0开头的电话
    /^1([38]\d|5[23]|7[3678])\d{8}$/
    //第一部分:^1 以1开头
    //第二部分:([38]\d | 5[23] | 7[3678]) 表示第二位第三位有三种组合方式
    //第三部分: \d{8}$ 后面8位都为数字,且以数字结尾

  9. 身份证验证:
    /\d{15}|\d{18}/
    // | 表示或者

正则的方法

  1. 正则.test(字符串) 判断是否有匹配的内容,返回值为true(有匹配内容) 、fasle(无匹配内容)

  2. 字符串.search(正则/字符串) ---实际是一个字符串方法
    //匹配字符串中是否含有某子串或者正则匹配规则
    'sha'.search('h') //1
    'sha'.search(/a$/) //2
    'shae'.search(/a$/) //-1

    //search()和indexOf()的区别:前者区分大小写,后者不区分
    

    更多方法 ---有空再看

新建正则表达式的两种方法

  1. 通过 / /字面量的方式 --较常用

    let reg=/^a[acbd]\w/
    //第一种方法在引擎编译代码时,就会新建正则表达式

  2. 通过RegExp构造函数

    let reg=new RegExp('^a[acbd]')
    //在运行时才会新建一个正则表达式。

  3. 第一个参数:字符串,指定了正则表达式的模式

  4. 第二个参数:可选,给正则表达式添加修饰符

  5. 当不用new创建RegExp对象时,此时RegExp就是一个普通的函数,通过返回值返回正则对象
    let reg = RegExp('abc')
    // reg=/abc/
    let reg1 = RegExp(/abc/)
    // reg1=/bac/ ---直接返回的就是参数 /abc/

正则对象的实例属性

  1. 和修饰符相关的:
    • RegExp.prototype.ignoreCase:返回一个布尔值,表示是否设置了i修饰符。
    • RegExp.prototype.global:返回一个布尔值,表示是否设置了g修饰符。
    • RegExp.prototype.multiline:返回一个布尔值,表示是否设置了m修饰符。
  2. 和修饰符无关:
    • RegExp.prototype.lastIndex:返回一个数值,表示下一次开始搜索的位置。该属性可读写,但是只在进行连续搜索时有意义,详细介绍请看后文。

    • RegExp.prototype.source:返回正则表达式的字符串形式(不包括反斜杠),该属性只读。
      var r = /^a[bc]\w$/igm;

      r.lastIndex // 0
      r.source // "^a[bc]\w$"
      

正则的实例方法

详情网址


  1. A-Za-z ↩︎

  2. \u4e00-\u9fa5 ↩︎

Copyright © 2024 妖娆的油条
Powered by .NET 8.0 on Kubernetes