正则表达式

定义方式

var reg=new RegExp(‘abc’,‘gi’)

var reg=/hello/

方法

正则.test(字符串)-----检查字符串中指定值,返回true/false

正则.exec(字符串)-----找到指定值,返回数组,没有返回null

 var str = 'qwertyuiopqwertyuiop'
    let reg = /o/g
    let count = 0;
    while ((reg.exec(str))) {
        count++
    }
    console.log(count) //2

字符串.match(正则)-----和exec一样但是可以匹配多个

“186a619b28”.match(/\d+/g); // [“186”,“619”,“28”]

字符串.search(正则)-------找到第一个返回下标

字符串.replace(正则,字符串/函数)-----替换,生成新的

let str = 'hello world';
let str1 = str.replace('hello', 'new');
console.log(str1) //new world
str.replace(b, c => {
        return `<span style="color:red">${c}</span>`
    })
let str = 'please make heath your first proprity';
str1 = str.replace(/\b\w+\b/g, function (word) {
    console.log('匹配正则的参数',word);
    return word[0].toUpperCase() + word.slice(1);
});
console.log(str1); //Please Make Heath Your First Proprity

g -----全局匹配(不加匹配一个就停了)

i 不区分大小写

s 匹配模式,忽略换行遇到换行就当成空白符

let str=`
aaaaa
bbbbb
`
str.match(/.+/s)

m 匹配模式,每一行单独处理

let str=`
aaaaa
bbbbb
`
str.match(/.+/gm) 

【】/ ( )/ { }

项目Value
【12345】满足有1-5任意一个的【a-h】
【^12345】不满足条件的
(12 丨34 )12或者34,获取匹配的常跟丨
{n,m}最少n,最多m,匹配次数{n},n次。(123){1,2}->123/123123

\w \d \s \b \n

项目Value
\w字母数字下划线 [A-Za-z0-9]
\W非字母数字下划线
\d数字([\d\D]所有内容)
\D非数字
\s空的字符(空格,/n换行符)([\s\S]所有内容)
\S非空字符
\b单词边界 /on\b/ 以on结尾
\B非单词边界
\n换行符

[a-z],[A-Z],[0-9]

项目Value
[a-z]在a-z区间
[A-Z]在A-Z区间
[0-9]在0-9区间

+ ,*,?

项目Value
+匹配一次或多次(贪婪模式)
×(*) 匹配0次或多次
匹配0次或多次 ( / https?/ http或https)(/do(es)?/ ,do或does)
var str = '718334085'
    console.log(str.match(/[0-9]/g)) //['7', '1', '8', '3', '3', '4', '0', '8', '5']
    console.log(str.match(/[0-9]+/g)) //'718334085'

禁止贪婪+和*后面跟?

/hb+?/ //1
/hb*?/ //0
/hb??/  //0


<body>
    <span>11111</span>
    <span>22222</span>
    <span>33333</span>
</body>
<script>
   var sp=document.querySelector('body')
   var reg=/<span>([\s\S]+?)<\/span>/gi //?禁止贪婪
   sp.innerHTML.replace(reg,(v,p1)=>{
return `<h4>${p1}</h4>`
   })

^ ,$

项目Value
^在[ ]里是不满足条件的,在外面是以^…开头的
$结束

断言 ?= ,?<=

var str=/hell(?=o)/g
//hell后面带o的
var str=/(?<=h)ello/g
//判断前面的

手机号后四位变成**

var str='13719863466'
var reg=/(?<=\d{7})\d{4}/ig
str.replace(res,(a)=>{
	return *.repeat(4)
})

\ 转义字符

当一个字符存在多个含义的时候就需要转义

项目Value
. 点第一个含义除换行外普通字符,第二个含义字符串点
var str='http://www.baidu.com'
(/http?:\/\/\w+\.\w+\.\w+/)

$& 匹配到的内容

let hd='qq345q'
hd.replace(/345/,'$&') //qq345q
hd.replace(/345/,'$&0') //qq3450q

原子组

用()包起来,拥有自己的组编号

let str='2002-03-22'
str.match(/^\d{4}([\/-])\d{2}([\/-])\d{2}$/)
str.match(/^\d{4}([\/-])\d{2}\1\d{2}$/)//或者这么写
//[\/-]原子表 2002/03/22或者用- 链接都可以
//\1代表用前面的原子表匹配模式

(?:com| org|cn)不保存这个原子组,不能使用\1

h标签替换p标签

  var a = `
    <h1>123</h1>
    <h2>234</h2>
    `
    var b = a.replace(/<(h[1-6])>([\s\S]+)<\/\1>/gi, (p0, p1, p2) => { //p
        return `<p>${p2}</p>` //提取第二个原子组的内容
    })
    console.log(b) // <p>123</p>  <p>234</p>

原子组起别名?< 名字>

  var reg=/<span>(?<con>[\s\S]+?)<\/span>/gi //?禁止贪婪
   sp.innerHTML.replace(reg,'<h2>$<con></h2>'
   )

匹配中文

let a='dyyui344,加油'
a.match(/\p{sc=Han}/gu)

文字高亮

<body>
    <div class="box">345v4435tvgrr</div>
</body>
<script>
    var a = prompt('请输入要查询的,可以用正则')
    var b = new RegExp(a, 'g')
    var box = document.querySelector('.box')
    box.innerHTML = box.innerHTML.replace(b, c => {
        return `<span style="color:red">${c}</span>`
    })
</script>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值