回顾(JavaScript)Js正则表达式

时间: 2023-07-18 admin IT培训

回顾(JavaScript)Js正则表达式

回顾(JavaScript)Js正则表达式

目录

一.Js中正则的特殊符号(元字符)

二.定义正则

三.正则的常用方法 :

四: 常用的正则表达式


一.Js中正则的特殊符号(元字符)

  1. /…/: 代表一个模式的开始和结束

  2. ^: 匹配字符串的开始,例如 /^A/ 并不会匹配 “an A” 中的 ‘A’,但是会匹配 “An E” 中的 ‘A’。

  3. $: 匹配字符串的结束,例如 /t$/ 并不会匹配 “eater” 中的 ‘t’,但是会匹配 “eat” 中的 ‘t’。

  4. \n: 匹配一个换行符 (U+000A)。

  5. \r: 匹配一个回车符 (U+000D)。

  6. \s: 任何空白字符

  7. \S: 任何非空白字符

  8. \d: 匹配一个数字字符,等价于[0-9],/\d/ 或者 /[0-9]/ 匹配"B2 is the suite number."中的’2’

  9. \D: 除了数字之外的任何字符,等价于0-9,/\D/ 或者 /0-9/ 匹配"B2 is the suite number."中的’B’

  10. \w: 匹配一个数字、下划线或字母字符,等价于[A-Za-z0-9_]

  11. \W: 任何非单字字符,等价于 a-zA-z0-9

  12. .: (小数点)默认匹配除换行符之外的任何单个字符。例如,/.n/ 将会匹配 “nay, an apple is on the tree” 中的 ‘an’ 和 ‘on’,但是不会匹配 ‘nay’。

  13. {n}: 匹配前一项n次

  14. {n,}: 匹配前一项n次,或者多次

  15. {n,m}: 匹配前一项至少n次,但是不能超过m次

  16. n*: 匹配前一项0次或多次,等价于{0,},例如/bo*/ 会匹配 “A ghost boooooed” 中的 ‘booooo’ 和 “A bird warbled” 中的 ‘b’,但是在 “A goat grunted” 中不会匹配任何内容。

  17. n+: 匹配前一项1次或多次,等价于{1,},/a+/ 会匹配 “candy” 中的 ‘a’ 和 “caaaaaaandy” 中所有的 ‘a’,但是在 “cndy” 中不会匹配任何内容。

  18. n?: 匹配前一项0次或1次,也就是说前一项是可选的,等价于{0,1},例如,/e?le?/ 匹配 “angel” 中的 ‘el’、“angle” 中的 ‘le’ 以及 "oslo’ 中的 ‘l’。

  19. x|y: 匹配‘x’或者‘y’。例如 /green|red/匹配“green apple”中的‘green’和“red apple”中的‘red’

二.定义正则

1 var re = new RegExp(“a”);  //RegExp对象。参数就是我们想要制定的规则。有一种情况必须用这种方式,下面会提到。
2 var re = /a/;   // 简写方法 推荐使用 性能更好  不能为空 不然以为是注释 ,

三.正则的常用方法 :

1 test() :

在字符串中查找符合正则的内容,若查找到返回true,反之返回false.

用法:正则.test(字符串) 
例子:判断是否是数字
   var str = '12345678';var re = /\D/;      //  \D代表非数字if (re.test(str)) {   // 返回true,代表在字符串中找到了非数字。console.log('不全是数字');} else {console.log('全是数字');}

2 match() :

在字符串中搜索复合规则的内容,搜索成功就返回内容,格式为数组,失败就返回null。

用法: 字符串.match(正则),   量词:+ 至少出现一次 匹配不确定的次数(匹配就是搜索查找的意思)   全局匹配:g——global(正则中默认,只要搜索到复合规则的内容就会结束搜索 )

例子:找出指定格式的所有数字,如下找到 123,54,33,879

var str = 'one 123 two 23 three 3';
var re = /\d+/g;   
// 每次匹配至少一个数字  且全局匹配  如果不是全局匹配,当找到数字123,它就会停止了。
// 就只会弹出123.加上全局匹配,就会从开始到结束一直去搜索符合规则的。如果没有加号,匹配的结果就是'1', '2', '3', '2', '3', '3',并不是我们想要的,
// 有了加号,每次匹配的数字就是至少一个了。
console.log( str.match(re) );   // ['123', '23', '3']
例子:​匹配读取: 读取字符串中的所有'o'
//1.创建正则表达式
var reg = /o/gi; //   g: global 全部  i: ignore 忽略大小写
//2.创建目标字符串
var str = "Hello oo WOrld!";
//3.match函数返回一个数组
var arrstr = str.match(reg);
arrstr.forEach(s => {console.log(s); // 3个o 一个O
});

3 replace() :

用法: 字符串.replace(正则,新的字符串/回调函数)(在回调函数中,第一个参数指的是每次匹配成功的字符) | : 或的意思 。

例子:敏感词过滤,比如 我爱北京天安门,天安门上太阳升。------我爱*,上太阳升。即北京和天安门变成*号,

var str = "我爱北京天安门,天安门上太阳升。";
var re = /北京|天安门/g;  //  找到北京 或者天安门 全局匹配
var str2 = str.replace(re, function (str) {console.log(str); //用来测试:函数的第一个参数代表每次搜索到的符合正则的字符,所以第一次str指的是北京 第二次str是天安门 第三次str是天安门var result = '';for (var i = 0; i < str.length; i++) {result += '*';}return result; //所以搜索到了几个字就返回几个*
});
console.log(str2)  //我爱*****,***上太阳升
//整个过程就是,找到北京,替换成了两个*,找到天安门替换成了3个*,找到天安门替换成3个*。

四: 常用的正则表达式

  1. 用户名验证         /^[a-zA-Z_][a-zA-Z_0-9-]{5,9}$/

  2. 密码验证             /^[a-zA-Z0-9_\@#&*-]{6,12}$/

  3. 前后空格验证      /^\s+|\s+$/g

  4. 电子邮箱验证      /^[a-zA-Z0-9_.-]+@([a-zA-Z0-9-]+[.]{1})+[a-zA-Z]+$/

  5. 手机号验证          /(^1[3|4|5|6|7|8|9]\d{9}$)|(^09\d{8}$)/

  6. 身份证验证          /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/

  7. 网址验证             /^(https?:|mailto:|tel:)/