当前位置:首页 » 《随便一记》 » 正文

快速掌握正则表达式 | 03 元字符真好玩_超逸の学习技术博客

3 人参与  2022年05月24日 09:35  分类 : 《随便一记》  评论

点击全文阅读


元字符真好玩

正则表达式真好玩, 上一篇中我们提及了元字符的概念,本篇带你了解更多元字符的内容,真好玩。

空白字符怎么匹配

在之前的内容我们要么是匹配字母,要么是匹配数字,亦或是匹配一些特殊的字符(通过转义),那一些空白字符我们该如何匹配呢?

比如换行,回车,Tab 键,删除等等,在实际需求中,我们可能需要去掉这些空白字符或者进行替换操作。

看本篇的标题可能就知道了,我们又会用到元字符,那么现在介绍一下关于空白元字符

元字符作用
\n换行符
\r回车符
\s匹配任何空白字符,包括空格、制表符、换页符等等
\t制表符(Tab 键)
\v垂直制表符
\f换页符
[\b]回退(并删除)一个字符(Backspace键)

关于这个空白元字符比较常见的可能就是前三个了,大家能记下来是最好的,不能记的话还能回翻我的博客。

那么,现在来简单使用一下上述空白元字符吧,例子如下:

let str = 'There are really many front-end big guys';
let reg = /\s/g;
let res = str.match(reg);
console.log(res); //  [' ', ' ', ' ', ' ', ' ', ' ']

这个例子比较简单,就是使用一下 \s 来匹配一下空白的字符,注意上述表格所说,会包括空格、制表符、换页符等等,等价于 [ \f\n\r\t\v]

同时还要注意 Unicode 正则表达式会匹配全角空格符。

而这个 Unicode 正则表达式是啥呢,可以给大家简单举例:

num.match('\u0661\u0662\u0663')

观察表格,回顾一下我们之前讲过的元字符,发现规律了吗,大部分的元字符都需要转义字符 \,比如我们上述所使用的 \s,如果没有转义操作,那么将只会匹配字符本身。

特殊字符怎么匹配

从上文到现在,我们已经学会了一些特定的匹配,对于任意字符呀,然后多个匹配,还使用了字符集合、空白字符等,但元字符的知识还不仅仅局限于此。

我们继续来看看吧,对于一些特殊字符,其实也并不特殊,可以说是更加简化的写法。

数字与非数字简化

在之前我们掌握可以通过 [0-9] 来简化 [0123456789] 的写法,那么现在再来教你一招,使用数字元字符。

元字符作用
\d等价于 [0-9]
\D等价于 [^0-9]

直接看例子吧,继续使用我们之前的例子:

\d 使用:

let arr = ['choco1','choco2', 'nhoco3', 'yhoco6', 'hearling'];
let reg = /[Ccyn]hoco\d/g;
let res = arr.filter(item=>item.match(reg));
console.log(res) // ['choco1', 'choco2', 'nhoco3', 'yhoco6']

\D 使用

let arr = ['choco1','choco2', 'nhoco3', 'yhoco6', 'hearling', 'chocol'];
let reg = /[Ccyn]hoco\D/g;
let res = arr.filter(item=>item.match(reg));
console.log(res) //  ['chocol']

字母数字与非字母数字的简化

看标题可能比较拗口,直接看下述表格举例吧:

元字符作用
\w等价于 [a-zA-Z0-9_]
\W等价于 [^a-zA-Z0-9_]

\w 会匹配字母和数字,并且还会包括下划线,这个值得注意,下划线可以匹配得到。

\W 就是与上述相反。

\w 使用:

let arr = ['choco1','choco2', 'nhoco3', 'yhoco6', 'hearling', 'chocol'];
let reg = /\whoco\D/g;
let res = arr.filter(item=>item.match(reg));
console.log(res) //  ['chocol']

\W 使用:

let arr = ['C++','JAVA','PHP','JS'];
let reg = /[Cc]\W\W/g;
let res = arr.filter(item=>item.match(reg));
console.log(res) //  ['C++']

空白字符与非空白字符

这个其实在上文中就有给大家提及过,在这里就只通过表格给大家展示了:

元字符作用
\s等价于 [\f\n\r\t\v],代表空白字符
\S等价于 [^\f\n\r\t\v],代表非空白字符

进制的匹配问题

想必大家也会遇到一些算法题,可能会需要匹配进制,然后将某个进制转化等等,比较常见的就是十六进制、八进制等。

那么在这里来举例来说明一下:

十六进制的表示通过前缀 \x 来表示,我们可以试着玩玩:

console.log('Choco\xA0late') // Choco late
console.log('Choco\xAClate') // Choco¬late
console.log('Choco\xFClate') // Chocoülate
console.log('Choco\xBClate') // Choco¼late
console.log('Choco\xABlate') // Choco«late

而八进制的表示通过前缀 \0 来表示,我们也可以试着玩玩:

console.log('Choco\011late') // Choco	late
console.log('Choco\00late') // Chocolate
console.log('Choco\061late') // Choco1late
console.log('Choco\071ate') // Choco9ate
console.log('Choco\066late') // Choco6late

小结

不知不觉已经坚持输出第三篇博客了,希望继续努力更新完整个系列~

本小节内容到底就结束啦,感谢各位的阅读,我们期待下一篇吧。


点击全文阅读


本文链接:http://zhangshiyu.com/post/40655.html

字符  匹配  空白  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1