js的正则表达式学习总结

65 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情

js中的正则

RegExp 对象

RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。

我们可以直接创建例如

const patt1: RegExp = /[0-9]+/;

也可以通过RegExp的构造方法创建。

const patt2: RegExp = new RegExp("[0-9]+");

这也很符合js万物皆对象的理念,我们可以通过创建regexp对象来使用正则的方法。但在这之前,先说一说正则的语法。

正则语法

/.../ 双斜线即声明这是一个正则表达式,里面的内容就是匹配的表达式。例如/[abc]/它匹配的是所以为a,b,c的字符

const str = "hello world";


const patt3 = /[abcde]/g;

console.log(str.match(patt3));  //[ 'e', 'd' ]  

这是一个简单的例子,我们注意到/.../g,这个g是什么呢?global的意识,即全局匹配,也就是全部匹配的意思,可以看到结果是e,d。我们不加g对比一下

const str = "hello world";

const patt3 = /[abcde]/;

console.log(str.match(patt3)); //[ 'e', index: 1, input: 'hello world', groups: undefined ]

可以看到只匹配了第一个e。

这里的g的语法属于依赖符 其他还有i:不区分大小写的匹配,m:多行匹配,我们也可以gi都写,即不区分大小写的全局匹配。那么我们可以得出正则的公式/patten/attribute

而这里的方括号[]也是一个语法,即为匹配括号内的字符,有一些常用的表达式,例如[A-Z]大写A到大写Z,[a-Z]小写a到大写Z的所有字符,[^avc]匹配不在方括号内的所有字符。[a|b|c]或的写法。

上面的还比较简单,但是加上元字符就变得很复杂了。

元字符描述
.查找单个字符,除了换行和行结束符。
\w查找单词字符。
\W查找非单词字符。
\d查找数字。
\D查找非数字字符。
\s查找空白字符。
\S查找非空白字符。
\b匹配单词边界。
\B匹配非单词边界。
\0查找 NUL 字符。
\n查找换行符。
\f查找换页符。
\r查找回车符。
\t查找制表符。
\v查找垂直制表符。
\xxx查找以八进制数 xxx 规定的字符。
\xdd查找以十六进制数 dd 规定的字符。
\uxxxx查找以十六进制数 xxxx 规定的 Unicode 字符。

RegExp 对象属性

属性描述FFIE
globalRegExp 对象是否具有标志 g。14
ignoreCaseRegExp 对象是否具有标志 i。14
lastIndex一个整数,标示开始下一次匹配的字符位置。14
multilineRegExp 对象是否具有标志 m。14
source正则表达式的源文本。14

RegExp 对象方法

方法描述FFIE
compile编译正则表达式。14
exec检索字符串中指定的值。返回找到的值,并确定其位置。14
test检索字符串中指定的值。返回 true 或 false。14

支持正则表达式的 String 对象的方法

方法描述FFIE
search检索与正则表达式相匹配的值。14
match找到一个或多个正则表达式的匹配。14
replace替换与正则表达式匹配的子串。14
split把字符串分割为字符串数组。14

重点

^abc^表示严格匹配,只能匹配字符串为"abc".

[...]匹配的是单个字符,因此/[...]/g也是返回一个字符数组

^[a-zA-Z_]$ 所有的字母和下划线

转义符匹配特殊字符

[^a-z] //除了小写字母以外的所有字符 
[^\/^] //除了()(/)(^)之外的所有字符 
[^"'] //除了双引号(")和单引号(')之外的所有字符

.表示任意单个字符,^.b%匹配 ab cb db 等等

总结

本次文章都是来自于w3cshool,当需要正则的时候都可以上这上面去找JavaScript RegExp 参考手册 (w3school.com.cn)

正则是很复杂的,有许许多多的组合,一般是遇到自己不会的正则表达式再去搜,记住一些常用语法即可。

结语

本次的文章到这里就结束啦!♥♥♥读者大大们认为写的不错的话点个赞再走哦 ♥♥♥

每天一个知识点,每天都在进步!♥♥