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