持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第23天,点击查看活动详情
点元字符
点匹配任意字符除了换行符。 效果如下,.是任意字符,+表示贪婪匹配。所以匹配了整个字符串
var str = `saobang@163.com`
var reg = /.+/;
console.log(str.match(reg))
// ['saobang@163.com', index: 0, input: 'saobang@163.com', groups: undefined]
但是不能匹配换行符号,下面字符串中有空格,但是输入结果和上面一样,只匹配了前半段字符串,说明它遇到换行就结束匹配了。这种情况可以添加一个模式s,就是忽略空白符号,认为是一行字符串
var str = `saobang@163.com
saobangshishizebang`
var reg = /.+/s;
console.log(str.match(reg))
或者增加一个\s的规则就可以匹配一整段字符串了
var str = `saobang@163.com
saobangshishizebang`
var reg = /(.|\s)+/;
console.log(str.match(reg))
巧妙的匹配任意字符
使用中括号\d和\D组合,或者是中括号\s\S组合
var str = `shizebangshiwoerzi
`
var reg = /[\d\D]+/;
console.log(str.match(reg))
举例如下,假如想匹配div之间的任意字符,写法如下,假如中间只写.+,不行,因为遇到了换行符号就不匹配了,除非加上s模式,或者加上\s的规则
var str = `
<div>
shizebangshiwoerzi
</div>
`
var reg = /<div>[\d\D]+<\/div>/;
console.log(str.match(reg))
匹配模式i和g
当我们匹配网址或者邮箱时,我们一般会忽略大小写,假如要匹配所有的关键字shi,忽略大小写,因为有的人按规范写,有的人不按规范,导致有大有小,匹配困难,这时候只需要在匹配模式上加入i,就可以实现
var str = `shiShisHi@163.com`
var reg = /(shi)+/i;
console.log(str.match(reg))
g模式,一般是比较常用的模式,可以匹配全局符合正则表达式的字符,一般在替换时有着强大作用,如下代码是匹配所有shi,忽略大小写,里面所有的shi都可以被匹配。
var str = `shi212Shi121212sHi@163.com`
var reg = /(shi)+/ig;
console.log(str.match(reg))
假设想把上面的shi全部替换成shizebang,
var str = `shi212Shi121212sHi@163.com`
var reg = /(shi)+/ig;
console.log(str.replace(reg,'shizebang'))