本文正在参加「金石计划 . 瓜分6万现金大奖」
1.正则表达式:
正则表达式,顾名思义,用来处理字符串
的规则。
-
只能作用于字符串
-
用来验证
(test)
某个字符串是否符合规则,也可以用来获取(match/exec)
符合规则的字符串
let go1 = 'nba star kobe24';
let reg1 = /\d+/;
let test1 = reg1.test(go1);
console.log('test1',test1); //true
//\d代表任何一个0-9之间的数字; +表示出现1到多次;所以”\d+“表示是否出现了连续的数字
// 捕获
let get1Str = '2022-11-14';
let get1 = reg1.exec(get1Str);
console.log('get1',get1); // ["2022"]
2.正则表达式的编写:
创建正则表达式分为两种方式:
-
字面量创建
let createReg1 = /\d+/;
-
构造函数创建
(个别可能需要转译)
- 元字符字符串
- 修饰符字符串
// 构造函数:元字符字符串,修饰符字符串 let createReg2 = new RegExp('\\d+',);
3.常见的元字符:
元字符分为3类
:下面以表格的形式整理了常见的元字符
-
量词元字符
量词元字符: 符号释义: * 0-多次 + 1-多次 ? 0次或者1次 {n} 出现n次 {n,} 出现n-多次 {n,m} 出现n-m次 -
特殊元字符
特殊元字符: 符号释义: \ 转义字符,普通->特殊->普通 . 除了"\n"(换行符)以外的任意字符 以哪个元字符作为开始 $ 以哪个元字符作为结束 \n 换行符 \d 0-9之间的一个数字 \D 非0-9之间的一个数字 \w 数字、字母、下划线中任意一个字符 \s 一个空白字符(包含空格、制表、换页符) \t 制表符(一个tab键) \b 匹配一个单词的边界 x|y x或者y中的一个字符 [xyz] x或者y或者z中的一个字符 [^xy] 除了x或者y以外的字符 [a-Z] 指a-z这个范围中的任意字符 [^a-Z] 上一个取反 () 正则中的分组 (?:) 只匹配不捕获 (?=) 正向预查 (?!=) 负向预查 -
普通元字符
/yss/
这个正则匹配的就是yss
4.元字符详细解析:
下面这个就是对上面表格中元字符
使用的讲解和使用小例子
1.^和$:
//
let reg = /^kobe/;
reg.test('24kobe'); //fasle
reg.test('kobe24'); //true
// ^和$两个都不加,字符串中包含符合规则的内容即可
let reg = /\d+/;
reg.test('24kobe')//true;
// ^/$两个都加:字符串只能是符合规则一致的内容
let reg2 = /^\d+$/;
//以11位手机号为例(第一个数字为1即可)
let reg3 = /^1\d{10}$/;
- ^和$两个都不加,字符串中包含符合规则的内容即可
- ^/$两个都加:字符串只能是符合规则一致的内容
let reg = /^6.7$/;
reg.test("6.7") // true
reg.test("6&7") // true
reg.test("67") //false
- 这里需要注意下
.
的意思(对照上面表格即可)
2.转译 "\":
let string = "\d";
reg = /^\d$/; //这种方式不能匹配的
reg = /^\\d$/; //得需要添加转义字符"\""
- 一些元字符需要添加
\
进行转译,把特殊的符号
转为普通
3.分组():
使用分组()
来改变优先级
let kobeNum = '8'
let reg= /^(8|24)$/;
reg.test(kobeNum)//true
4.中括号中不存在多位数
中括号[]
中不存在多位数,如下图例子:
let reg = /^[24]$/;
console.log(reg.test('2'));//true
console.log(reg.test('4'));//true
console.log(reg.test('24'));//false
5.常用正则表达式:
1.验证常用有效数字:
规则分析:
- 可能出现
+
、-
号,也可能不出现 --->[+-]?
或者(+|-)?
- 一位数时,
0-9
都可以;多位数时,0
不能做首位。--->(\d|([1-9]\d+))
- 小数部分可能
有
可能没有
,有的话,后面必须是小数点 + 数字
。(\.\d+)?
let reg = /^(+|-)?(\d|([1-9]\d+))(\.\d+)?$/;
2.验证密码:
规则分析:
- 数字、字母、下划线
- 6-16位
var pwd = 'asdf@1234';
let pwdReg = /^\w{6,16}$/;
3.验证用户名:
规则分析:
- 汉字 --->
/^[\u4E00-\u9FA5]$/
- 名字长度2-10位
- 可能有译名
·
汉字
let reg = /^[\u4E00-\u9FA5]{2,10}(·[\u4E00-\u9FA5]{0,2})$/
正则表达式的学习,只有将元字符梳理清楚,才能够达到看得懂,然后到会用的地步,笔者这里也只是整理下。感谢您的观看,也感谢我家莎老板
。