2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 【JS】javascript正则表达式的基本使用(JavaScript RegExp 对象)

【JS】javascript正则表达式的基本使用(JavaScript RegExp 对象)

时间:2024-04-11 19:07:34

相关推荐

【JS】javascript正则表达式的基本使用(JavaScript RegExp 对象)

javascript正则表达式的基本使用(JavaScript RegExp 对象)

1. 正则表达式是什么?2. 基本使用语法2.1 正则表达式思维导图2.2 定义正则表达式2.2.1 普通方式-字面量定义2.2.2 构造函数定义2.3 字符组 [ ]2.4 区间 -2.5 匹配特殊字符 \2.6 取反 ^2.7 开始和结束 ^ $2.8 任意字符 .2.9 分组 ( )2.4 使用正则匹配3. 常用示例3.1 匹配括号与括号的内容3.2 .匹配用户名3.3 获取文件类型

1. 正则表达式是什么?

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个特定规则的文本。

2. 基本使用语法

2.1 正则表达式思维导图

2.2 定义正则表达式

2.2.1 普通方式-字面量定义

当正则表达式保持不变时,使用此方法可获得更好的性能。

let reg = /abc/;let reg = /d(b+)d/g;

2.2.2 构造函数定义

如果正则表达式将会改变,或者它将会从用户输入等来源动态产生,就需要用构造函数来创建正则表达式。构造函数写法可以进行变量值的拼接。

let reg = new RegExp("abc");let reg = new RegExp("d(b+)d", "g");

2.3 字符组 [ ]

字符组[]:在正则表达式语法中,方括号[]表示字符范围,允许匹配可能出现的字符。

let reg1 = /[Jj]ava/g; //使用字符组匹配Java和 java。let reg2 = /[Rr]ub[ye]/g; //使用字符组匹配Ruby、Rube、ruby、rube。

在方括号中可以包含多个字符,表示匹配其中任意字符。

2.4 区间 -

如果多个字符的编码顺序是连续的,可以仅指定开头和结尾字符,省略中间字符,仅使用连字符-表示。

let reg = /[0-9A-Za-z]/g; //匹配数据所有的数字、小写字母和大写字母。

2.5 匹配特殊字符 \

正则表达使用了-号代表了区间,但是我们有时候需要匹配的符号就是-号,该怎么办呢?

这个时候我们需要对-号进行转义操作,即\-

例如匹配圆括号可以使用\(

2.6 取反 ^

如果在方括号内添加脱字符^前缀,还可以表示范围之外的字符。例如:

[abc]:查找方括号内任意一个字符。[^abc]:查找不在方括号内的字符。[0-9]:查找从 0 至 9 范围内的数字,即查找数字。[a-z]:查找从小写 a 到小写 z 范围内的字符,即查找小写字母。[A-Z]:查找从大写 A 到大写 Z 范围内的字符,即查找大写字母。[A-z]:查找从大写 A 到小写 z 范围内的字符,即所有大小写的字母。

2.7 开始和结束 ^ $

正则表达式中^指定的是一个字符串的开始,$指定的是一个字符串的结束。

let reg = /.*PNG$/g; //匹配以PNG结尾的字符串

2.8 任意字符 .

.字符代表匹配任何单个字符,它只能出现在方括号以外。

值得注意的是: .字符只有一个不能匹配的字符,也就是换行符(\n)。

2.9 分组 ( )

分组有一个非常重要的功能——捕获数据。所以()被称为捕获分组,用来捕获数据,当我们想要从匹配好的数据中提取关键数据的时候可以使用分组。

let reg = /<div>(.*?)</div>/g; //分组并提取<div>hi</div>中的hi

2.4 使用正则匹配

3. 常用示例

正则表达式测试练习网站https://regexr-/

正则表达式在线生成工具/regex/create_reg

菜鸟教程/jsref/jsref-obj-regexp.html

3.1 匹配括号与括号的内容

let str="123{xxxx}456[我的]789123[你的]456(1389090)789";let regex1 = /\((.+?)\)/g; // () 小括号let regex2 = /\[(.+?)\]/g; // [] 中括号let regex3 = /\{(.+?)\}/g; // {} 花括号,大括号// 输出是一个数组console.log(str.match(regex1)); console.log(str.match(regex2));console.log(str.match(regex3));

3.2 .匹配用户名

规则描述:

长度4-6位: {4,16}

字母: [a-z] [A-Z]

数字: [0-9]

下划线: [_]

减号: [-]

let usernameReg = /^[a-zA-Z0-9_-]{4,16}$/;

代码分析:

^: 匹配字符串的开始位置[]: 中括号表达式,字符集合,匹配所包含的任意一个字符 [xyz] :字符集合,匹配所包含的任意一个字符[^xyz] :负值字符集合,匹配未包含的任意字符 -:a-z 表示范围连接符,最后一个-代表-本身{}: 限定符 {n}: 匹配确定的n次{n,}:至少匹配n次{n,m}: 最少匹配n次且最多匹配m次 $: 匹配字符串结尾的位置

3.3 获取文件类型

getFileType (url) {let pdfReg = /^.+(\.pdf)$/let txtReg = /^.+(\.txt)$/let wordReg = /^.+(\.doc|\.docx)$/let excelReg = /^.+(\.xls|\.xlsx)$/let jpgReg = /^.+(\.png|\.jpg|\.jpeg|\.bmp)$/if (pdfReg.test(url)) {return 'pdf'}if (txtReg.test(url)) {return 'txt'}if (wordReg.test(url)) {return 'word'}if (excelReg.test(url)) {return 'excel'}if (jpgReg.test(url)) {return 'picture'}}

/codezha/article/details/105412738

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。