当前位置: 首页 > article >正文

Js:正则表达式及其方法

一、正则表达式的介绍:

1、含义:

正则表达式用来定义一个规则,是Js中的一个对象。

2、作用:

① 计算机可以检查一个字符串是否符合规则

② 将字符串中符合规则的内容进行提取

二、正则表达式的创建:

1、 通过构造函数创建:new RegExp(规则, 标识)

标识 / 匹配模式:

(1)匹配模式的数据类型:字符串
(2)匹配模式取值:
i:忽略大小写
g:全局匹配模式

var reg = new RegExp('a','i');
consoole.log(reg)  // /a/i

② 使用场景:动态创建规则

③ 注意事项:

当使用转义字符(\)的时候,需要写两个 \\

var reg = new RegExp('\\w','i');
consoole.log(reg)  // /\w/i

2、 字面量创建:var 变量 = /规则/标识

var reg = /a/i ;
consoole.log(reg)  // /a/i

三、正则表达式的语法:

1、 的表示:

| :表示整体的或

// 匹配ab或c或de的字符串
let reg = /ab|c|de/;
let str = 'c'
let result = reg.test(str)
console.log(result) // true

[] :表示字符集 – 只要有某个字符就行

// 匹配任意包含a或b或c或d的字符串
let reg = /[abcd]/;
let str = 'cd'
let result = reg.test(str)
console.log(result) // true

2、 任意的小写字母:

[a-z]

// 匹配任意包含a到z之间的内容
let reg = /[a-z]/;
let str = 'c'
let result = reg.test(str)
console.log(result) // true

/[a-z]/i

// 匹配任意忽略大小写的包含a到z之间的内容
let reg = /[a-z]/i;
let str = 'H'
let result = reg.test(str)
console.log(result) // true

2、 任意的大写字母:

[A-Z]

// 匹配任意包含A到Z之间的内容
let reg = /[A-Z]/;
let str = 'c'
let result = reg.test(str)
console.log(result) // false

/[A-Z]/i

// 匹配任意忽略大小写的包含A到Z之间的内容
let reg = /[A-Z]/i;
let str = 'c'
let result = reg.test(str)
console.log(result) // true

3、 任意字母:[a-zA-Z]

// 匹配任意字母
let reg = /[a-zA-Z]/;
let str = 'cfff'
let result = reg.test(str)
console.log(result) // true

4、任意数字:

[0-9]

// 匹配任意数字
let reg = /[0-9]/;
let str = '123'
let result = reg.test(str)
console.log(result) // true

\d

// 匹配任意除了0到9之外的内容
let reg = /\d/;
let str = 'cd123d'
let result = reg.test(str)
console.log(result) // true

5、除了XXX:[^ ]

// 匹配任意除了包含a或b之外的内容
let reg = /^[abb]/;
let str = 'bc'
let result = reg.test(str)
console.log(result) // true

6、匹配除了数字之外的:

[^0-9]

// 匹配任意除了0到9之外的内容
let reg = /[^0-9]/;
let str = '111ccc'
let result = reg.test(str)
console.log(result) // true

\D

// 匹配任意除了0到9之外的内容
let reg = /\D/;
let str = '111ccc'
let result = reg.test(str)
console.log(result) // true

7、除了换行符之外的任意字符:.

// 匹配除了换行符之外的任意字符
let reg = /./;
let str = '\n'
let result = reg.test(str)
console.log(result) // false

8、转义字符:\

// 匹配.
let reg = /\./;
let str = 'ab.c'
let result = reg.test(str)
console.log(result) // true

9、匹配任意的字母、数字、下划线:

\w

let reg = /\w/;
let str = '&111&'
let result = reg.test(str)
console.log(result) // true

[A-z0-9_]

let reg = /[A-z0-9_]/;
let str = '&111&'
let result = reg.test(str)
console.log(result) // true

10、匹配除了任意的字母、数字、下划线之外的任意内容:

\W

let reg = /\W/;
let str = '11sA!'
let result = reg.test(str)
console.log(result) // true

[^A-z0-9_]

let reg = /[^A-z0-9_]/;
let str = '11sA!'
let result = reg.test(str)
console.log(result) // true

11、匹配空格:\s

let reg = /\s/;
let str = '   11sA   '
let result = reg.test(str)
console.log(result) // true

12、除了空格之外的任意内容:\S

let reg = /\S/;
let str = '  aa'
let result = reg.test(str)
console.log(result) // true

13、单词边界的任意内容:\b

① 单词边界含义:单词左右两边和非单词的位置,同类无界。

② 作用:用来精准的匹配单词

let reg = /\bchild\b/;
let str = 'children'
let result = reg.test(str)
console.log(result) // false

14、除了单词边界之外的任意内容:\B

① 非单词边界含义:单词内部的字符之间的位置。

② 使用:

// 非单词边界处的“cat”
let reg = /\Bcat\B/g;
let str = "The cat scattered his food all over the catacomb.";
let result = str.match(reg)
console.log(result) // ['cat']

15、匹配开头:^

// 匹配当前内容是否以a开头
let reg = /^a/;
let str = '  aa'
let result = reg.test(str)
console.log(result) // false

16、匹配结尾:$

// 匹配当前内容是否以a结尾
let reg = /a$/;
let str = '  aa'
let result = reg.test(str)
console.log(result) // true

17、完全匹配:^ $

要求字符串和正则完全匹配

let reg = /^a$/;
let str = "a";
let result = reg.test(str)
console.log(result) // true

四、量词:设置一个内容出现的次数

量词只对它前边的一个内容起作用

1、出现m次:{m}

// 匹配是否有出现3次的a
let reg = /a{3}/;
let str = "aaa123";
let result = reg.test(str)
console.log(result) // true
// 匹配是否有只出现3次的a
let reg = /^a{3}$/;
let str = "aaaa";
let result = reg.test(str)
console.log(result) // false
// 匹配出现3次的字符,字符取值a到z
let reg = /[a-z]{3}/;
let str = "acd";
let result = reg.test(str)
console.log(result) // true
// 匹配出现3次的字符串ab
let reg = /(ab){3}/;
let str = "acd";
let result = reg.test(str)
console.log(result) // false

2、 出现m-n次:{m,n}

// 匹配出现1到3次的a
let reg = /a{1,3}/;
let str = "ahhh";
let result = reg.test(str)
console.log(result) // true

3、 出现m次以上:{m,}

// 匹配出现3次以上的a
let reg = /a{3,}/;
let str = "aa123";
let result = reg.test(str)
console.log(result) // false

4、 至少出现一次:

+

// 匹配至少出现1次的a
let reg = /a+/;
let str = "aaa123";
let result = reg.test(str)
console.log(result) // true

{1,}

// 匹配至少出现1次的a
let reg = /a{1,}/;
let str = "aaa123";
let result = reg.test(str)
console.log(result) // true

5、出现0次或者多次(任意次数):

*

// 匹配出现0次或者多次的a
let reg = /a*/;
let str = "123";
let result = reg.test(str)
console.log(result) // true

{0,}

// 匹配出现0次或者多次的a
let reg = /a{0,}/;
let str = "123";
let result = reg.test(str)
console.log(result) // true

6、出现0次或者1次:

?

// 匹配出现0次或者1次的a
let reg = /a?/;
let str = "b123";
let result = reg.test(str)
console.log(result) // false

{0,1}

// 匹配出现0次或者1次的a
let reg = /a{0,1}/;
let str = "b123";
let result = reg.test(str)
console.log(result) // false

五、正则表达式的方法:

1、 通过正则表达式检查一个字符串是否符合规则:

正则表达式.test(字符串):符合返回 true

// 判断当前字符串是否含有 a
let reg = new RegExp('a', 'i');
let str = 'abc';
let result = reg.test(str);
console.log(result) // true

2、将一个字符串拆分为一个数组:字符串.split(正则表达式)

全局匹配

// 根据任意字母拆分字符串
let reg = /[A-z]/;
let str = 'a1b2c3d4';
let result = str.split(reg)
console.log(result) // ['', '1', '2', '3', '4']

3、搜索字符串中是否含有指定内容:字符串.search(正则表达式)

如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到,则返回 -1
只会查找第一个,即使设置了全局匹配,也没有用

// 查找第一个a加b或或f加c组成的内容
let reg = /a[bef]c/;
let str = 'hello abc hello aec afc';
let result = str.search(reg)
console.log(result) // 6

4、将符合条件的内容提取出来:

字符串.match(正则表达式)

默认情况下,match只会找到第一个符合要求的内容,将匹配到的内容封装到一个数组中返回。
设置正则表达式的全局匹配模式,这样会匹配所有的内容

// 不区分大小写,全局匹配所有字母
let reg = /[A-z]/ig;
let str = 'a1b2c3d4ABCD';
let result = str.match(reg)
console.log(result) // ['a', 'b', 'c', 'd', 'A', 'B', 'C', 'D']

正则表达式.exec(字符串)

// 匹配axc格式的内容
let reg = /a[a-z]c/;
let str = "abcadcaecacc";
let result = reg.exec(str)
console.log(result) // ['abc', index: 0, input: 'abcadcaecacc', groups: undefined]

5、内容替换:字符串.replace(正则表达式, 新内容)

默认只会替换匹配到的第一个内容

// 将匹配到的第一个a替换为(●ˇ∀ˇ●)
let reg = /a/;
let str = 'a1b2a3d4ABaD';
let result = str.replace(reg,'(●ˇ∀ˇ●)')
console.log(result) // (●ˇ∀ˇ●)1b2a3d4ABaD

六、 常用的正则:

1、去除开头和结尾的空格:

var reg = /^\s+|\s+$/g
var str = "       hell    o       "
str.replace(reg,"")  // 结果:hell    o

2、输入框中只允许输入正数(包含小数):

onkeyup="value= (value.replace(/[^.0-9]/,'').replace(/.*?(\d+\.?\d*).*/g,'$1')).replace(/^0+/,'0')"

http://www.kler.cn/a/507275.html

相关文章:

  • ASP.NET Core WebApi接口IP限流实践技术指南
  • JVM直击重点
  • Java设计模式——单例模式(特性、各种实现、懒汉式、饿汉式、内部类实现、枚举方式、双重校验+锁)
  • 怎么用python写个唤醒睡眠电脑的脚本?
  • git操作(Windows中GitHub)
  • 大疆最新款无人机发布,可照亮百米之外目标
  • 基于单片机的语音控制玩具汽车的设计
  • UE5 gas制作平A,冷却,打击伤害
  • Fabric区块链网络搭建:保姆级图文详解
  • C#在Json序列化时将key和value转为对应的中文
  • jmeter事务控制器-勾选Generate Parent Sample
  • 基于单片机的智能计步器电路设计
  • Flink Standalone 方案中解决挂机问题
  • 树莓派5--系统问题汇总
  • Qt 线程常用通信方式
  • 【LeetCode】每日一题 2024_1_14 超过阈值的最少操作数 I(简单模拟)
  • 安全测评主要标准
  • java实现树形递归
  • flutter在使用gradle时的加速
  • python中数据可视化库(Matplotlib)
  • PCL 获取指定区域的点【2025最新版】
  • 万字长文介绍ARINC 653,以及在综合模块化航空电子设备(IMA)中的作用
  • 如何使用Ultralytics训练自己的yolo5 yolo8 yolo10 yolo11等目标检测模型
  • 强化学习-蒙特卡洛方法
  • 数据库基础实验1(创建表,设置外键,检查,不为空,主键等约束)安装mysql详细步骤
  • 通过智能合约攻击漏洞:夺取合约所有权并提取余额