• 正则练习


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>正则表达式练习</title>
    </head>
    <style>
      ul{
        list-style: decimal;
      }
    </style>
    <body>
        <div class="reg">
          <h2>正则的元字符和修饰符</h2>
          <h3>修饰符</h3>
          <ul>
            <li>g(global):全局匹配</li>
            <li>i(ignoreCase):忽略大小写匹配</li>
            <li>m(multiline):多行匹配</li>
          </ul>
          <hr>
          <h3>元字符</h3>
          <p>[量词元字符]</p>
          <ul>
            <li>+:出现1-n次</li>
            <li>?:出现0-1次</li>
            <li>*: 出现0-n次</li>
            <li>{n}出现n次</li>
            <li>{n,}出现n到多次</li>
            <li>{n,m}出现n到m次</li>
          </ul>
          <hr>
          <p>[特殊意义的元字符]</p>
          <ul>
            <li>:转义字符(把一个普通字符转变为有特殊意义的字符,或者把一个有意义字符转换为普通的字符)</li>
            <li>.:除了
    (换行符)以外的任意字符</li>
            <li>d: 匹配一个0-9之间的数字</li>
            <li>D:匹配任意一个非0-9之间的数字</li>
            <li>w:匹配一个0-9或者_之间的字符</li>
            <li>W:匹配一个非0-9或者_之间的字符</li>
            <li>s: 匹配一个任意空白符</li>
            <li>S: 匹配一个非任意空白符</li>
            <li>:匹配一个边界符</li>
            <li>B:匹配一个非边界符</li>
            <li>x|y: 匹配x或者y中的一个</li>
            <li>[a-z]: 匹配a-z的任意字符</li>
            <li>[^a-z]: 匹配任意一个非a-z的字符</li>
            <li>[xyz]: 匹配x或者y或者z的一个字符</li>
            <li>[^xyz]: 匹配除了xyz以外的任意字符</li>
            <li>(): 正则的小分组,匹配一个小分组(小分组可以理解为大正则中的小正则)。小分组第二个作用:分组引用。第三个作用:分组捕获</li>
            <li>^:以某一个元字符开始</li>
            <li>$: 以某一个元字符结束</li>
            <li>?: :只匹配不捕获</li>
            <li>?=: 正向预查</li>
            <li>?!:负向预查</li>
          </ul>
          <br>
          <hr>
          <p>分组引用(1 或者 2... 出现第n个分组一模一样的内容)</p>
          <p>
            <span>var reg = /^([a-z])([a-z])2([a-z])$/</span><br>
            <span>例如:foot,book,week,oppo,http</span>
          </p>
          <br>
          <hr>
          <p>分组捕获</p>
          <p>中括号出现的元字符,一般都代表本身的含义</p>
          <p>例如:
            <span>var reg = /^[.?+&]/;  =>里边的四个元字符都是本身含义,例如:.就是小数点,不是所谓的任意字符</span>
          </p>
        </div>
    </body>
    <script type="text/javascript">
    // var reg = /^$/ // 俩斜杠之间包含的一些内容就是正则,俩个斜杠之间包含的全部内容都是元字符
    
    
    // $ 匹配字符串的结尾位置
    // * 匹配前面的子表达式0次或者多次
    // + 匹配前面的子表达式1次或者多次
    // ? 匹配子表达式0次或者1此次 例如do(es)?  可以匹配'do'、'does'、'doytss'中的do
    // {n} n是一个非负整数。匹配确定n的次数。 例如't{2}'不能匹配'dot'中的t,但是能匹配'dotted'中的俩个t
    // {n,} n是一个非负整数。至少匹配n次,例如't{2,}'不能匹配'dot'中的t,但是能匹配'dotttttt'中的所有t
    // {n,m} n和m都是非负整数,其中n<=m。 最少匹配n次且最多匹配m次。例如't{1,3}'将匹配'dotttttt'中的前三个t
    //  匹配一个单词边界,也就是指单词和空格键的位置
    // B 匹配非单词边界。
    var reg = /^[0-9]{5}t{1,3}do(es)*a$/
    var text = '32134tttdoesa'
    console.log(reg.test(text))
    
    var reg1 = /^[1-9][0-9]{1}$/
    console.log(reg1.test('22'))
    
    
    var reg2 = /<.*?>/
    let b = '<h1>dsasda</h1>'
    console.log(b.match(reg2))
    
    // 正则过滤a,b,c
    var text3 = 'pjkmjknjlabcn'
    var reg3 = '/[a,b,c]/g'
    console.log(text3.replace(/[a,b,c]/g, ''));
    
    // 所有的正整数 
    var reg3 = /^[1-9][0-9]{0,}/
    var num = 98
    console.log(reg3.test(num))
    
    // 所有的正整数 
    var reg4 = /^[1-9]0$/
    var num1 = 10
    console.log(reg4.test(num1))
    
    var url = 'http://baidu.com:8080?user=name&pwd=password'
    var reg4 = /(w+)://([^/:]+)(:d*)?([^# ]*)/
    console.log(url.match(reg4))
    
    function regNum(x=0) {
      return x.toString().replace(/B(?=(d{3})+(?!d))/g, ',')
    }
    console.log(regNum(23456))
    
    var reg8 = /^18|19$/ 
     // 以18开头或者以19结尾
     // 以1开头,以9结尾,中间是8或者1
     // 以18开头或者19结尾即可 =》'你好18'  '18你好'
    console.log(reg8.test('18'))
    console.log(reg8.test('19'))
    console.log(reg8.test('1819'))
    console.log(reg8.test('181'))
    console.log(reg8.test('819'))
    console.log(reg8.test('181'))
    console.log(reg8.test('你好18')) // false
    console.log(reg8.test('你好19')) // true
    console.log(reg8.test('18你好'))
    
    var reg9 = /^(18|19)$/ //  只有18或者19符合
    console.log(reg9.test('18'))
    console.log(reg9.test('19'))
    console.log(reg9.test('1819')) // false
    
    // 中括号出现的元字符,一般都代表本身的含义
    var regs = /^[.?+&]/;
    console.log(regs.test('18')) //false
    console.log(regs.test('.d')) //true
    console.log(regs.test('+d')) //true
    console.log(regs.test('?')) //true
    
    
    // 以数字、字母、下划线、-,并且不能以-开头
    var regt = /^w[w-]*$/
    console.log(regt.test('9-2')) //true
    console.log(regt.test('-2')) //false
    
    
    // 验证18-65之间的年龄
    // var regy = /^[18-65]$/  =>1或者8-6或者5中的任意一个字符,中括号中出现的18不是数字,而是1或者8,当前正则是非法的,不能设置这种范围
    // 分三个阶段 
    // 1、18或者19
    // 2、 20-50  
    // 3、60-65
    // var regage = /^((18|19)|([2-5]d)|(6[0-5]))$/
    var regage = /^((18|19)|([2-5]d)|(6[0-5]))$/
    console.log(regage.test(23))
    </script>
    </html>
  • 相关阅读:
    由u盘安装Ubuntu引出的事件
    初试Ubuntu
    从error 中学习
    快手一面:牛客:字符串左移
    快手一面:Leetcode:最小栈
    十三、线程池
    十二、windows临界区、其他各种mutex互斥量
    十一、std::async深入
    LeetCode(703):找出数据流中的第K大元素
    LeetCode(1003):检查替换后的字符串
  • 原文地址:https://www.cnblogs.com/chailuG/p/11674177.html
Copyright © 2020-2023  润新知