持续创作,加速成长!这是我参与「掘金日新计划 · 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 对象属性
属性 | 描述 | FF | IE |
---|---|---|---|
global | RegExp 对象是否具有标志 g。 | 1 | 4 |
ignoreCase | RegExp 对象是否具有标志 i。 | 1 | 4 |
lastIndex | 一个整数,标示开始下一次匹配的字符位置。 | 1 | 4 |
multiline | RegExp 对象是否具有标志 m。 | 1 | 4 |
source | 正则表达式的源文本。 | 1 | 4 |
RegExp 对象方法
方法 | 描述 | FF | IE |
---|---|---|---|
compile | 编译正则表达式。 | 1 | 4 |
exec | 检索字符串中指定的值。返回找到的值,并确定其位置。 | 1 | 4 |
test | 检索字符串中指定的值。返回 true 或 false。 | 1 | 4 |
支持正则表达式的 String 对象的方法
方法 | 描述 | FF | IE |
---|---|---|---|
search | 检索与正则表达式相匹配的值。 | 1 | 4 |
match | 找到一个或多个正则表达式的匹配。 | 1 | 4 |
replace | 替换与正则表达式匹配的子串。 | 1 | 4 |
split | 把字符串分割为字符串数组。 | 1 | 4 |
重点
^abc^表示严格匹配,只能匹配字符串为"abc".
[...]匹配的是单个字符,因此/[...]/g也是返回一个字符数组
^[a-zA-Z_]$ 所有的字母和下划线
转义符匹配特殊字符
[^a-z] //除了小写字母以外的所有字符
[^\/^] //除了()(/)(^)之外的所有字符
[^"'] //除了双引号(")和单引号(')之外的所有字符
.表示任意单个字符,^.b%匹配 ab cb db 等等
总结
本次文章都是来自于w3cshool,当需要正则的时候都可以上这上面去找JavaScript RegExp 参考手册 (w3school.com.cn)
正则是很复杂的,有许许多多的组合,一般是遇到自己不会的正则表达式再去搜,记住一些常用语法即可。
结语
本次的文章到这里就结束啦!♥♥♥读者大大们认为写的不错的话点个赞再走哦 ♥♥♥
每天一个知识点,每天都在进步!♥♥