[Day28] 正规表达式 Regular Expression

这几天写 String methods 的时候,在句法里发现(regexp)这个词,查了一下原来是 Regular Expression 的缩写,也就是正规表示式(或称正则表达式、规则运算式)。
wiki 解释

过去使用 indesign 排版的经验,觉得语法似曾相识,原来 grep 就是正规表达式的一种。下图为用 indesign 排版,字母与数字遇到中文字的情况,段落 1 是不留空白,段落 2 会自动加空白的举例。

段落 2 的 grep 设定如下图,在 indesign 可以直接打指令或用图形化介面选取需要的功能。

回到正题,在 JavaScript 里的正规表达式

正规表达式是用於匹配字串中字元组合的模式。--MDN

很饶舌但好像没有更精简的说法,简单的说就是寻找字串里面有没有符合你设定的正规表达式,而在 JavaScript 中,正规表达式也是物件的一种。
正规表达式有两种写法:

  1. 正规表达式字面值(regular expression literal)
let re = /ab+c/; 
  1. 呼叫 RegExp 物件的建构函式
let re = new RegExp('ab+c');

RegExp.test()

RegExp 的这个方法,他可以检查字串里是否有匹配的字元组合,并且回传 true 或 false。

基本的使用方式,就是将要搜寻的字串写进 / 内直接检查,如下例:

/abc/.test("abc"); // true

那刚刚上面举例的 /ab+c/ 是什麽意思?regexp 有许多特殊字元可以搭配使用,+ 是重复 1 次或多次的意思,* 是重复 0 次或多次,来看测试结果。

/ab+c/.test("ac") // false
/ab+c/.test("abc") // true,一次
/ab+c/.test("abbbbbc") // true,多次

/ab*c/.test("ac") // true,0 次
/ab*c/.test("abc") // true
/ab*c/.test("abbbbbc") // true

除了特殊字元,还有很多代表的符号列如一些较常用的:
x|y 符合 x 或 y,用 | 分隔字符,可以像这样 w|x|y|z,一直或或或或或下去。
\d 符合数字 0-9
\s 符合空白
\w 符合数字跟字母与底线[A-Za-z0-9_]

参考资料

MDN-正规表达式
wiki-正规表示式
前端藏宝图系列 第 6 篇 深不可测的海 - Regular Expression


<<:  JavaScript Day28 - HTTP 网路请求

>>:  #29 Electron 打包应用程序

[Day 27]TensorFlow运算方法

我们今天来聊聊TensorFlow运算的几个较为常用的方法,不像其他语言的加减乘除,TensorFl...

让Python GUI 画面在最前方显示/ 最小化显示/ 隐藏桌面图示的方法

很多时候,刚程序开启後有可能因为使用者操作的因素就让正在跑的程序被盖住了。尤其是在使用键盘滑鼠精灵控...

Day14 - Kotlin的类别

Day14 - Kotlin的类别 昨天我们把集合结束掉了,今天我们就来讲Kotlin的类别吧,过了...

Day16:终於要进去新手村了-Javascript-回圈-while

回圈有两种语法可以使用,分别是while与for回圈,今天这篇会先来讲到while回圈的部分。 基本...

Day28_隐私盾协定听起来好酷呀-2021/10/11

▉估狗『各国 个资法』 就~如标题,既昨天的笔记,想看看,那各国的个资法是?? 然後就看到这个『隐私...