正则练习

<!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>.:除了\n(换行符)以外的任意字符</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>\b:匹配一个边界符</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 匹配一个单词边界,也就是指单词和空格键的位置
// \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>

 

posted @ 2019-10-14 21:10  府谷市民小柴  阅读(137)  评论(0编辑  收藏  举报