【JS基础】在js中如何简单的使用正则表达式
创始人
2024-02-02 01:47:14

文章目录

  • 前言
  • 创建正则
  • 字符类型的匹配方法
    • search
    • replace
    • match
  • 正则的匹配方法
    • test
  • 转义
    • 特殊符号冲突
    • 正则创建问题
  • 记一些规则符号
    • 修饰符
    • 原子表`[]`和原子组`()`
    • 配合转义字符
    • 其他字符
    • 量词
  • 一些实用的正则

前言

关于正则表达式的介绍,推荐看这篇文章正则表达式30分钟入门教程,博客就只记录本人日常可能会用到的东西。

由于本人是金鱼记忆,建议和我一样的学会怎么使用和记住一些基础的规则符号即可,基本上平时需要的正则百度一下就能搜到。


创建正则

首先正则的一般写法是:/正则表达式主体/修饰符(可选),创建出来后可以把他当成一个对象。

let obj = /world/;
console.log(typeof obj);  // object

除了字面量的写法,还可以使用new的写法,第一个参数是个字符串,里面写正则规则,第二个是修饰符。

let obj = new RegExp('world', 'g') // g表示全局匹配

字符类型的匹配方法

意思就是字符类型的变量里有哪些方法是可以联动正则

search

这个方法是通过规则去匹配,匹配到了就返回第一个字符的下标,匹配不到返回-1

let str = "hello world";
let n = str.search(/world/); // 用了简单的正则匹配
console.log(n); // 6 从下标6开始匹配到

像上面这种简单的,也可以直接用字符串去匹配

let str = "hello world";
let n = str.search("world");
console.log(n); // 6 从下标6开始匹配到

replace

这个方法是将匹配到的字符替换成指定字符。

let str = "hello world";
let str1 = str.replace(/world/, 'csdn');
console.log(str1);  // hello csdn

同样,上面这种简单的匹配也可以通过字符串去匹配。

let str = "hello world";
let str1 = str.replace("world", 'csdn');
console.log(str1);  // hello csdn

这个方法的第二个参数支持回调,如参默认为匹配到的字符,然后必须要返回替换的字符

let str = "hello world";
let str1 = str.replace(/world/, s=>{return '做一些处理'
});
console.log(str1);  // hello 做一些处理

match

这个方法我理解是search的详细版,返回的是一个数组,里面有一些信息,如果匹配失败了返回null

let str = '123456'
console.log(str.match(/45/)); 

在这里插入图片描述


正则的匹配方法

意思是正则对象里,有哪些方法是匹配相关的。

test

测试指定内容是否匹配正则,匹配到了返回true,反之。

let str = 'hello world'
let reg = /world/;
console.log(reg.test(str), /world/.test(str));  // true,true

转义

特殊符号冲突

正则里面有些符号是有含义的例如.,表示除了换行外的任何字符,可是有时候我们就是想用正常的点符号咋办,可以在前面加上\

let str = '123.456'
console.log(str.search(/\./)); // 3

正则创建问题

字面量创建的方式前后都有个/符号,new的话就直接写字符串,但是一般正则的规则不会像只有字符串这么简单,例如匹配数字的符号\d

let reg1 = /\d/ // 字面量写法没问题
let reg2 = new RegExp('\d') // 意思就变成了只是d
console.log(reg1.test('12.'), reg2.test('12.'), reg2.test('ad')); // true false true

为什么会这样,因为在字符串中'\d' === 'd',真离谱哈哈,所以可以多加个\转义表示

let reg2 = new RegExp('\\d') 
console.log(reg2.test('12.')); // true 

记一些规则符号

一些简单的规则符号记住就行了,分类是我自己定义的,理解意思就行了

修饰符

全局匹配/g

表示全局匹配,且只要匹配上了就不会继续匹配

忽略大小写/i

原子表[]和原子组()

原子表用[]表示,我目前理解的是里面放的字符都是或者的关系

let str = '123456'
console.log(str.match(/[34]/)); // 类似 /3|4/

原子组用()表示,把内部的成员作为一个整体,有点抽象哈,还是用或者符举例

let str = '123456'
console.log(str.match(/34|45/)); // 这个只会去匹配一次
console.log(str.match(/(34|45)/)); // 这个34|45匹一次后还会再34|45匹配一次

配合转义字符

表示数字\d,表示非数字\D

表示空格\s,表示非空格\S

表示字母,数字,下划线\w,反之\W

表示重复前面子项n次\n\1\2

其他字符

任何符号.

以什么为开头^ ,以什么为结尾$

或者 |

|表示

let str = '123456'
console.log(/2|4/.test(str)); // 匹配 2 或者 4

量词

符号含义
*表示0次或0次以上
+表示等于或多于
?表示0次或1次
{}表示出现的次数

一些实用的正则

以后补充哈

相关内容

热门资讯

应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...