JavaScript学习笔记——正则表达式

1.正则表达式的含义和作用

正则表达式是用于匹配规律规则的表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。
作用:

  • 给定的字符串是否符合正则表达式的过滤逻辑(匹配)。
  • 可以通过正则表达式,从字符串中获取我们想要的特定部分(提取)。
  • 强大的字符串替换能力(替换)。

2.正则表达式的组成

普通字符 + 特殊字符(元字符),比如:abc123\d\w,abc123是普通字符 \d\w是元字符。

3.常用的元字符

   \d    匹配数字     \D 匹配任意非数字的字符
   \w    匹配数字,字母或者下划线   \W 匹配不是数字,字母或者下划线
   \s    匹配任意位置的空白字符     \S 匹配任意不是空白的字符
   .     匹配除了换行符以外的任意单个字符 
   ^  匹配行首的文本(以谁开始)    $ 匹配行尾的文本(以谁结束)

4.限定符

*    限定 *之前的一个字符 重复出现零次或者多次
+    限定+之前的一个字符  重复出现一次或者多次
?   限定?之前的一个字符  重复出现零次或者一次
{n}    重复n次  {n,} 重复n次或者更多次  {n,m} 重复n到m次数
[]     匹配[]中的任意字符  比如[a-z] [0-9] 相当于或者的意思,是一个范围
[^]    匹配除了中括号以内的内容
{次数}是匹配内容出现的次数,[]表示匹配字符的内容范围,内容出现字数一次
\ 转义符
| 或者 选择两者中的一个,注意:选择的是|左右两部分内容 如果需要单个字符使用()
[\u4e00-\u9fa5]  匹配汉字

5.创建正则对象

方式一:new RegExp() 第一个参数pattern:匹配方式,第二个参数,i:忽略大小写 g:全局匹配 ,这都是字符串类型,gi:全局匹配+忽略大小写。
如果在正则表达式后面没有加上g,那么只会提取到一个匹配的结果,如果加上g就会全文查找所有可能的结果。

var str = 'abcdddd';
var reg = new RegExp('ab[a-z]','i');

方式二:/pattern/i或者g或gi

var reg2 = /^\d{4}\w+\w$/i;

匹配使用的方法:正则对象.test(匹配内容)。

6.正则提取

第一种方法:使用正则对象.exec(),只能提取一个内容(最先出现,返回的也是数组。
第二种方法:字符串.match(正则表达式),可以提取所有内容,返回的是数组
第三种方法:分组提取,在正则表达式中使用()作为分组来使用,判断字符串是否匹配,然后获取分组匹配的结果使用RegExp.$1,$2,$3……来获取。

var str = '张三:8000,李四:9800';
var reg = /\d+/g; //全局匹配 出现数字一次或者或者多次
console.log(reg.exec(str)); //返回的是Array数组对象
console.log(str.match(reg));
var dateStr = '1999-4-2';
var reg = /(\d{4})-(\d{1})-(\d{1})/; //分组提取 按照() 一次提取内容
if(reg.test(dateStr)) {
      console.log(RegExp.$1);
      console.log(RegExp.$2);
      console.log(RegExp.$3);
}

7.正则替换

replace() 两个参数,第一个是字符串中需要替换的内容,第二个是替换的内容。
使用正则表达式(加上全局配置g)就可以将字符串中的所有匹配的内容替换掉
split():切割,返回的数组,使用切割加上join()方法,最后方法的是替换的字符串。

//除去字符串中的空格
var str = ' H e Hello World ';
//使用replace()只会替换第一次出现的空格
// var newStr = str.replace(' ',''); 只能替换第一个
// console.log(newStr);
//replace()加上正则表达式可以查找整个字符串
var newStr = str.replace(/\s/g,'');
console.log(newStr);
//split()分割字符串,返回数组对象,数组元素默认使用逗号隔开
//join()方法,指定分隔符进行分割,返回字符串对象
console.log(str.split(' ').join(''));

8.贪婪模式和非贪婪模式
贪婪模式:一直查找到最后一个符合条件的字符。
非贪婪模式:匹配到第一个符合条件的字符就停止,在需要结束的字符前面加上?就是非贪婪模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值