正则表达式

正则表达式

属于字符串的相关操作

// 转义字符
\. 字符串中的点
\t 制表符,键盘中的tab建
\n 换行
\r 回车

正则表达式在js中是一种对象

创建正则表达式对象

let reg = new RegExp('a')
// 或者
let reg = /a/

  • test()

    //reg是一种正则表达式对象 
    let reg = /\./ 
    // 对象调函数
    reg.test('ajogsaoig.ajiog') //reg是一种规则 字符串中是否包含点
    

    返回值:匹配到则返回true 否则返回false

  • String.prototype.match()

    let reg = /\./
    let str = 'ajigo.jgia.aijg'
    let arr = str.match(reg)
    

    返回值:

    • 如果使用 g 标志,则将返回与完整正则表达式匹配的所有结果,但不会返回捕获组。

    • 如果未使用 g 标志,则仅返回第一个完整匹配及其相关的捕获组(Array)。 在这种情况下,返回的项目将具有如下所述的其他属性。

      附加属性

      • groups: 一个命名捕获组对象,其键是捕获组名称,值是捕获组,如果未定义命名捕获组,则为 undefined。
      • index: 匹配的结果的开始位置
      • input: 搜索的字符串。
  • exec():返回一个符合匹配的字符串

    var a = 'ahigubkgjoa'
    reg = /[a-b]+/g
    reg.exec(a)
    // [ 'b', index: 5, input: 'ahigubkgjoa', groups: undefined ]
    

    注意:同一个reg调用的时候时匹配到下一个

  • String.prototype.replace(reg,'4'):把匹配的reg替换成4

  • String.prototype.split():以指定字符来分割,返回一个分割后的数组

  • String.prototype.search():搜索匹配,如果匹配到则返回字符串首次匹配到的下标,否则返回-1

正则修饰符

  • i:执行对大小写不敏感的匹配/a/i

  • g:执行全局匹配/g/

  • m:执行多行匹配/m/

  • ^:^a以a开头

  • $:abc$表示以abc结尾
    
  • [] :[a-z]表示a到z的字母 [0-9]表示0-9的数字 (x|y)表示查找任何以x或是y的 A-z包括了区分大小写的所有字母

    注意:以为[]表示一位,中括号里面的内容是这一位取值的范围

    • ^:放在[]里面表示"非"的意思
// 去掉字符串前后空格
  var str = "  hello  "
  var reg = /(^\s+)|(\s$+)/g
  // --------------------
  var re = str.trim()
  // ---------------------------
  // 或将字符串转数组,在遍历删除空格
// 判断子串重复次数或者是否存在
  var str = 'helloab'
  var re = str.indexOf('lo') 		// 是否返回 -1来判断
  // -------正则 reg写正则表达式-------
  var reg = /1/g
  var re = str.match(reg) 	// 返回空或是数组
// 重复次数
  var str = 'helloab'
  var count = 0
  while(str.indexOf('l',temp)!= -1) {
        count++
        temp = str.indexOf('l',temp+1)
  }
  // -----正则-----
  var reg = /1/g
  var re = str.match(reg)
  console.log(re.length)

量词

  • +:包含至少一个

  • *:包含零个或多个

  • ?:零个或一个

  • {}:自定义包含几个

    reg = /a{3}/  // 包含3个a
    reg = /a{3,9}/  // 包含3到9个a
    reg = /a{3,}/ 	// 至少包含3个a
    
  • $:自定义以什么结尾

  • ^:自定义以什么开头

eg

// 以1开头的 11位数字
reg = /^1[0-9]{10}/
posted @ 2022-07-20 09:09  a立方  阅读(38)  评论(0编辑  收藏  举报