正则练习网址: https://www.codejiaonang.com/
正则在线测试网站: https://regexr-cn.com/
正则表达式在线测试:https://c.runoob.com/front-end/854【个人比较推荐这个】
开始学习正则表达式: 1.字符组表达式:/[Jj]ava/g
解释:可以匹配一组可能出现的字符。
示例:
// 示例一:匹配字符串【Java 8编程语言规范】中存在【Java】字符,其中【j】不区分大小写 var pattern = /[Jj]ava/, str = 'Java 8编程语言规范'; console.log(pattern.test(str)); // 结果:true2.区间
表达式:/[0-9]ava/g
解释:区间匹配,比如要匹配0到10的所有数字,需要在字符组中从0写到10,比较繁琐,这时我们可以用==连字符"-"==来表示,连字符支持数字和字母
- 匹配任意数字:[0-10]
- 匹配任意小写字母:[a-z]
- 匹配任意大写字母:[A-Z]
示例:
// 替换以下字符串中的所有数字为空 var str = "我012是一名Java3311开发人员"; console.log(str.replace(/[0-9]/g,"")); //结果:我是一名Java开发人员3.匹配特殊字符
表达式:/[0-9-]ava/g
解释:正则表达式中 - 代表区间,当如要匹配字符串中的 - 等特殊符号时,可以使用来进行转义(包括所有特殊符号)
示例:
// 替换以下字符串中的所有[-、(、)、[、]]为空 var str = "我-是一名(高级)[开发人员]"; console.log(str.replace(/[-()[]]/g,"")); //结果:我是一名Java开发人员4.取反
表达式:/[^0-9]ava/g
解释:匹配不包含定义字符组中存在的字符串,例如包含数字,只需要在匹配数字的字符组前面加上^
示例:
// 替换以下字符串中的所有非数字字符为空 var str = "树上7个猴,1个母猴,6个公猴"; console.log(str.replace(/[^0-9]/g,"")); //结果:7155.快捷匹配
表达式:/[d]ava/g
解释:匹配字符数字0-9或者字母A-Z等简洁操作
| 快捷方式 | 描述 |
|---|---|
| w | 与任意单词字符匹配,任意字符指:[A-Z]、[a-z]、[0-9]、_ |
| d | 与任意数字匹配 |
示例:
// 替换字符串中所有数字英文字母 var str = "java1.8和Java8的区别"; console.log(str.replace(/[dw]/g,"")); //结果:.和的区别6.匹配空白
表达式:/s/g
解释:匹配空白字符。空格、tab、换行等。
示例:
// 替换字符串中所有空白字符 var str = "j a v a1.8和Java8的区别"; console.log(str.replace(/s/g,"")); //结果:ava1.8和Java8的区别7.单词边界
表达式:/bJavazb/g
解释:匹配整个单词
示例:
// 替换字符串中所有Java字符 var str = "Java是一门超级牛逼的语言,我是一名Java爱好者!"; console.log(str.replace(/bJavab/g,"")); //结果:是一门超级牛逼的语言,我是一名爱好者!8.快捷方式取反
表达式:/D/g
解释:例如匹配所有非数字:D,其他快捷方式也是,只需要把小写变成大写就是取反。
示例:
// 替换字符串中所有非数字 var str = "Java1.0、Java2.0、Java3.0!"; console.log(str.replace(/D/g,"")); //结果:1020309.开始和结束
表达式:/^java/g
解释:^指定字符串开始,$指定字符串结束
示例:
// 匹配下列字符串是否以OS结尾 var pattern = /OS/g, str = 'AppleOS$'; console.log(pattern.test(str)); //结果:true10.任意字符
表达式:/java../g
解释:.代表匹配任何单个字符,只能出现在方括号内只有一个字符==n==不能匹配
示例:
// 替换所有以Java开头的6个字符单词为空 var str = "Java1.0、Java2.0、Java3.0!"; console.log(str.replace(/Java../g,"")); //结果:0、0、0!11.可选字符
表达式:/java?/g
解释:?指定一个字符、字符组或其他基本单元可选,该字符出现零次或者一次
示例:
// 替换所有以Java开头的6个字符单词为空 var str = "Java1.0、Java2.0、Java3.0!"; console.log(str.replace(/Java../g,"")); //结果:0、0、0!12.重复
表达式:/d{4}?/g
解释:{N}表示在它之前的字符组出现的次数。
示例:
// 替换字字符串中出现的不低于2位的数字为0
var str = "我是一个Java程序员,现在18岁!";
console.log(str.replace(/d{2}?/g,0));
//结果:是一个Java程序员,现在0岁!
13.重复区间
表达式:/d{4,8}/g(贪婪模式)/d{4,8}?/g(非贪婪模式)
解释:{M,N} M表示下界,N表示上届,/d{4,8}/g即表示数字可以出现的次数为4到8次之间。默认贪婪模式,加上?代表非贪婪模式。
- 贪婪模式:即优先匹配尽可能多的字符。
- 非贪婪模式:匹配少的字符,匹配到结果就好
// 替换字字符串中出现的不低于2位的数字为0
var str = "我是一个Java程序员,现在18岁!";
console.log(str.replace(/d{2}?/g,0));
//结果:是一个Java程序员,现在0岁!
14.开闭区间
表达式:/d{1,}/g速写:/d+/g、d*/g
解释:闭区间不写表示匹配1个或者无数个,+等价于{1,}、{0,}
// 替换Java开头带数字的所有字符 var str = "Java1234567,123456,Java1!"; console.log(str.replace(/Javad+/g,'')); //结果:,123456,!15.手机号匹配
手机号匹配正则:
^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])d{8}$



