JavaScript之正则表达式

61 阅读3分钟

正则表达式

正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript 中,正则表达式也是对象。这些模式被用于 RegExpexectest 方法,以及 StringmatchmatchAllreplacesearchsplit 方法。

定义正则表达式语法

使用一个正则表达式字面量,其由包含在斜杠之间的模式组成,如下所示:

const 变量名 = /表达式/

脚本加载后,正则表达式字面量就会被编译。当正则表达式保持不变时,使用此方法可获得更好的性能。

或者调用RegExp对象的构造函数,如下所示:

const 变量名 = new RegExp("表达式");

判断是否有符合规则的字符串:

正则表达式可以被用于 RegExpexectest (en-US) 方法以及 Stringmatch (en-US)replacesearch (en-US)split (en-US) 方法。这些方法在 JavaScript 手册中有详细的解释。例如,test() 方法,执行检索,用来查看正则表达式与指定的字符串是否匹配。如果匹配返回true,否则false

方法描述
exec一个在字符串中执行查找匹配的 RegExp 方法,它返回一个数组(未匹配到则返回 null)。
test一个在字符串中测试是否匹配的 RegExp 方法,它返回 true 或 false。
match一个在字符串中执行查找匹配的 String 方法,它返回一个数组,在未匹配到时会返回 null。
matchAll一个在字符串中执行查找所有匹配的 String 方法,它返回一个迭代器(iterator)。
search一个在字符串中测试匹配的 String 方法,它返回匹配到的位置索引,或者在失败时返回 -1。
replace一个在字符串中执行查找匹配的 String 方法,并且使用替换字符串替换掉匹配到的子字符串。
split一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的 String 方法。

元字符

边界符

⚫ 正则表达式中的边界符(位置符)用来 **提示字符所处的位置,**主要有两个字符
image.png 如果 ^ 和 $ 在一起,则表示 **精确匹配。 **

量词

⚫ 量词用来 设定某个模式出现的次数

image.png

注意: 逗号左右两侧千万不要出现空格

字符类

[ ] 匹配字符集合

⚫ 把多个选项,写在[ ]里面

⚫ 后面的字符串只要包含 abc 中任意一个字符,都返回 true

[ ] 里面加上 - 连字符

⚫ 使用连字符 - 表示一个范围

image.png

⚫ 比如:

➢ [a-z] 表示 a 到 z 26个英文字母都可以

➢ [a-zA-Z] 表示大小写都可以

➢ [0-9] 表示 0~9 的数字都可以

⚫ 写一个匹配qq号的正则:

image.png

[ ] 里面加上 ^ 取反符号

⚫ 比如:

➢ [^a-z] 匹配除了小写字母以外的字符

➢ 注意要写到中括号里面

(4) . 匹配除换行符之外的任何单个字符

(5)预定义类

预定义类:指的是 某些常见模式的简写方式

image.png image.png

修饰符

替换 replace 替换

⚫ 语法:

image.png

⚫ 返回值:替换完成后的新字符串

修饰符

⚫ 修饰符约束正则执行的某些细节行为,如是否区分大小写、是否支持多行匹配等

⚫ 语法:

image.png

➢ i 是单词 ignore 的缩写,正则匹配时字母不区分大小写

➢ g 是单词 global 的缩写,匹配所有满足正则表达式的结果

image.png

参考

正则表达式 - JavaScript | MDN (mozilla.org)