JS正则表达式

115 阅读3分钟

认识正则

  • 正则表达式 *
    • 规则表达式

    • 我们自己来书写,然后专门用来检测 字符串 是否符合规则

    • 创建正则

      • 1.var reg = /正则在这里边/
      • 2.var reg = new RegExp('正则写在这里边')
    • */

      var reg = /abc/ console.log(reg) var reg2 = new RegExp('abcd') console.log(reg2)

正则常用方法

  • 1.匹配

    • test 匹配字符串中是否符合正则的规则
    • true 符合
    • false 不符合
  • 2.捕获 */

     var reg = /abc/  //匹配一段字符串中是否包含'abc'
    
     var str1 = 'a'
     var str2 = 'ab'
     var str3 = 'abc'
     var str4 = 'abcd'
     var str5 = 'a1b2c3'
     console.log(reg.test(str1))
     console.log(reg.test(str2))
     console.log(reg.test(str3))
     console.log(reg.test(str4))
     console.log(reg.test(str5))
    

正则的元字符

  • 正则的元字符 *
    • 正则表达式的符号,由两种符号组成
    • 1.元字符
      • 正则的规则符号
      • 普通文本---正则的规定符号
    • 2.修饰符
      • 修饰整个正则表达式的符号

    • 普通元字符
      • 1.\d 表示一位数字(0-9)
      • 2.\D 表示一位非数字
      • 3.\s 表示一位空白内容(空格.缩进)
      • 4.\S 表示一位非空白内容
      • 5.\w 表示一位数字(0-9)字母(a-zA-Z)下划线(_)
      • 6.\W 表示一位非数字字母下划线
      • 7.. 表示一位非换行内容
      • 8.\ 表示转义符 */

1.\d

   var reg = /\d/  //匹配字符串中包含一位数字

   console.log(reg.test('abcd'))
   console.log(reg.test('abcd*(^&^('))
   console.log(reg.test('123'))

2.\D

  var reg = /\D/
  console.log(reg.test('abcd'))
  console.log(reg.test('abcd*(^&^('))
  console.log(reg.test('123'))
  

3.\s

  var reg = /\s/
  console.log(reg.test('123456%^&*mfn'))
  console.log(reg.test('123456%^ &*mfn'))

4.\S

  var reg = /\S/
  console.log(reg.test('123456%^&*mfn'))
  console.log(reg.test('123456%^ &*mfn'))
  console.log(reg.test(' '))

5.\w

  var reg = /\w/
  console.log(reg.test('abc'))  
  console.log(reg.test('a1b2c3'))
  console.log(reg.test('a1b2_c3'))
  console.log(reg.test('%$&^%*'))

6.\W

  var reg = /\W/
  console.log(reg.test('abc'))  
  console.log(reg.test('a1b2c3'))
  console.log(reg.test('a1b2_c3'))
  console.log(reg.test('%$&^%*'))
  console.log(reg.test(' '))

7..

  var reg = /./
  console.log(reg.test('%$&^%*'))
  console.log(reg.test('abc')) 
  console.log(reg.test('123')) 
  console.log(reg.test('\n')) // \n在JS中代表换行

8.\

  var reg = /\d\.\d/
  console.log(reg.test('abc'))
  console.log(reg.test('1.2'))

正则的边界元字符

  • 正则的边界元字符
    • 1.^ 表示开头

      var reg = /^\d/ console.log(reg.test('abcd')) console.log(reg.test('123')) console.log(reg.test('1abcd'))

    • 2.$ 表示结尾

      var reg = /\d$/ console.log(reg.test('abcd')) console.log(reg.test('123')) console.log(reg.test('abcd1'))

    • 当开头与结尾共同使用时,表示字符串必须是规则里的内容

      var reg = /abc/ console.log(reg.test('abcd')) var reg = /^abc$/ console.log(reg.test('abc')) console.log(reg.test('123')) console.log(reg.test('1abcd'))

    • */

正则的限定元字符

  • 正则的限定元字符 *
    • 限定了前一个符号出现多少次

    • 1.* 表示0~正无穷次

    • 2.+ 表示1~正无穷次

    • 3.? 表示0~1次

    • 4.{n} 表示限定n次

    • 5.{n,} 表示限定最少n次

    • 6.{n,m} 表示最少n次,最多m次 */

1.*

    var reg = /^\d*$/
    console.log(reg.test('abc'))
    console.log(reg.test('_99'))
    console.log(reg.test('999'))

2.+

    var reg = /^\d+$/
    console.log(reg.test('abc'))
    console.log(reg.test('_99'))
    console.log(reg.test('999'))
    console.log(reg.test(' '))

3.?

     var reg = /^\d?$/
    console.log(reg.test('abc'))
    console.log(reg.test('9'))
    console.log(reg.test('999'))
    console.log(reg.test(' '))

4.{n}

     var reg = /^\d{3}$/
    console.log(reg.test('abc'))
    console.log(reg.test('9'))
    console.log(reg.test('999'))
    console.log(reg.test('4444'))

5.{n,}

    var reg = /^\d{3,}$/
    console.log(reg.test('abc'))
    console.log(reg.test('9'))
    console.log(reg.test('999'))
    console.log(reg.test('4444'))

6.{n,m}

    var reg = /^\d{3,4}$/
    console.log(reg.test('abc'))
    console.log(reg.test('9'))
    console.log(reg.test('999'))
    console.log(reg.test('4444'))
    console.log(reg.test('4444454'))

正则的特殊元字符

  • 正则的特殊元字符 *
    • 1.()
      • 含义1:单独捕获
      • 含义2:一个整体
    • 2.|
      • 含义:或 a|b
    • 3.[] 包含中括号内其中一个即可
      • 在中括号中可以书写任意数量的符号,但是字符串只要满足其中一个即可

      • 4.[^] 非 不包含

      • 在中括号内可以书写任意数量的符号,只要字符串不是其中某一个就行

      • 5.- 到 至

      • 通常和[] [^]连用

      • /[0-9]/ 正则代表的含义数字0-9,等价于\d

      • /[^0-9]非数字0-9,等价于/D

      • /[a-z]/ 字母[a-z]

      • /[0-9a-zA-Z_]/ 等价于\w */

1 2
      var reg = /^(abc){2}$/
      console.log(reg.test('abc'))
      console.log(reg.test('abcabc'))

      var reg = /a|b/
      console.log(reg.test('a'))
3.[]
     var reg = /^[abcd]$/
    /**
     * 含义:
     * 字符串中,包含a b c d任意一个即可
    */
    console.log(reg.test('a'))
    console.log(reg.test('b'))
    console.log(reg.test('c'))
    console.log(reg.test('d'))
    console.log(reg.test('abcd'))
4.[^]
    var reg = /^[^abcd]$/

    console.log(reg.test('a'))
    console.log(reg.test('e'))

元字符或的分界线在哪里

  • 元字符或的分界线在哪里
    • 或的分界线为小括号或者正则的边界 */

         var reg = /^abc|def$/
        
         * 分析
         * /^abc|def$/
         * ^abc或者def$
        */
        console.log(reg.test('abc12345678'))
        console.log(reg.test('12345678def'))
        
    var reg = /^ab(c|d)ef$/
    /**
     * 分析
     * ^ab  c或者d  ef$
    */

    console.log(reg.test('abcef'))  //true
    console.log(reg.test('abdef'))  //true
    console.log(reg.test('abaef'))  //false
    console.log(reg.test('abgef'))  //false

正则的重复元字符

  • 正则的重复元字符
    • 符号:\数字
      • 含义:表示重复第n个小括号的内容,并且要求和小括号的内容完全一致 */
    var reg = /^(abc|def)\1$/ 
    /**
     * \1重复前面第一个小括号内容,小括号内如果是'abc',那么\1的值也需要是'abc'
    */
     console.log(reg.test('abcabc')) //true
     console.log(reg.test('defdef')) //true
     console.log(reg.test('abcdef')) //false

  • 要求字符串是span或者p标签 */
    var reg = /<(span|p)><\/\1>/
    console.log(reg.test('<span></span>'))
    console.log(reg.test('<p></p>'))

正则的标识符

  • 正则的标识符
    • 书写在正则外面,用来描述整个正则表达式
      • 1.i
        • 表示忽略大小写
      • 2.g
        • 表示全局 */
    var reg = /^[abcd]$/i
    console.log(reg.test('A'))
    console.log(reg.test('a'))