正则表达式学习笔记

正则表达式学习网站:

正则练习网址: 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));
// 结果:true

2.区间

表达式:/[0-9]ava/g

解释:区间匹配,比如要匹配0到10的所有数字,需要在字符组中从0写到10,比较繁琐,这时我们可以用==连字符"-"==来表示,连字符支持数字和字母

  1. 匹配任意数字:[0-10]
  2. 匹配任意小写字母:[a-z]
  3. 匹配任意大写字母:[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,""));
//结果:715

5.快捷匹配

表达式:/[\d]ava/g

解释:匹配字符数字0-9或者字母A-Z等简洁操作

快捷方式描述
\w与任意单词字符匹配,任意字符指:[A-Z]、[a-z]、[0-9]、_
\d与任意数字匹配

示例:

// 替换字符串中所有数字英文字母
var str = "java1.8和Java8的区别";
console.log(str.replace(/[\d\w]/g,""));
//结果:.和的区别

6.匹配空白

表达式:/\s/g

解释:匹配空白字符。空格、tab、换行等。

示例:

// 替换字符串中所有空白字符
var str = "j a v	a1.8和Java8的区别";
console.log(str.replace(/\s/g,""));
//结果:ava1.8和Java8的区别

7.单词边界

表达式:/\bJavaz\b/g

解释:匹配整个单词

示例:

// 替换字符串中所有Java字符
var str = "Java是一门超级牛逼的语言,我是一名Java爱好者!";
console.log(str.replace(/\bJava\b/g,""));
//结果:是一门超级牛逼的语言,我是一名爱好者!

8.快捷方式取反

表达式:/\D/g

解释:例如匹配所有非数字:\D,其他快捷方式也是,只需要把小写变成大写就是取反。

示例:

// 替换字符串中所有非数字
var str = "Java1.0、Java2.0、Java3.0!";
console.log(str.replace(/\D/g,""));
//结果:102030

9.开始和结束

表达式:/^java/g

解释:^指定字符串开始,$指定字符串结束

示例:

// 匹配下列字符串是否以OS结尾
var pattern = /OS/g,
	str = 'AppleOS$';
console.log(pattern.test(str));
//结果:true

10.任意字符

表达式:/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次之间。默认贪婪模式,加上?代表非贪婪模式。

  1. 贪婪模式:即优先匹配尽可能多的字符。
  2. 非贪婪模式:匹配少的字符,匹配到结果就好
// 替换字字符串中出现的不低于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(/Java\d+/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}$
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值