Web前端高级编程学习笔记6:正则表达式

正则表达式的基础

概述

JavaScript中使用 RegExp 对象来封装一个正则表达式,并提供相关的方法和属性。

创建方法

正则表达式的两种创建方法

字面量

let reg=/\bis\b/g;            //g表示全文匹配
let str='He is a boy.This is a dog. Where is she?'
console.log(str.replace(reg,'IS'))
//He IS a boy.This IS a dog. Where IS she?

构造函数

let reg=new RegExp('\\bis\\b','g');
let str='He is a boy.This is a dog. Where is she?'
console.log(str.replace(reg,'IS'))
//He IS a boy.This IS a dog. Where IS she?

修饰符

g:全文搜索
i:忽略大小写
m:多行搜索

字符类

当需要匹配一类字符时,用[ ] 表示为一类

let str='a1b2c3d4'
console.log(str.replace(/[abc]/g,'x'))
//"x1x2x3d4"

字符类取反

用 ^ 表示选择的字符除外

范围类

需要匹配数字时,可以使用范围类。
如,[a-z]表示从a到z的任意字符,并包含其本身。

let str='a1b2c3d4z0'
str.replace(/[a-z]/g,'X')
//"X1X2X3X4X0"

str.replace(/[a-zA-Z0-9]/g,'*')
//"**********"

let str='2020-03-25'
str.replace(/[0-9-]/g,'0')
//"0000000000"

预定义类

. (点),除了回车符和换行符之外的所有字符。
\d,数字字符
\D,非数字字符
\s,空白符
\S,非空白符
\w,单词字符(包括字母、数字和下划线)
\W,非凡次字符(除字母、数字和下划线之外的字符)

边界

^:以xxx开始
$:以xxx结束
\b:单词边界
\B:非单词边界

量词

? :出现0次或1次
+:出现1次或多次
*:出现0次或多次
{n}:出现n次
{n,m}:出现n到m次
{n,}:出现n次或更多次

str='12345678'
//贪婪模式,尽可能多的匹配
str.replace(/\d{3,6}/g,'X')               //"X78"

//非贪婪模式
str.replace(/\d{3,6}?/g,'X')              //"XX78"

分组

如 Byron{3},表示对n匹配3次
(Byron){3},表示对Byron匹配3次

反向引用

使用 $n 的形式引用模式中分组匹配到的文本,n为索引,从1开始。

console.log('2020-03-04'.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2/$3/$1'));
//"03/04/2020"

忽略分组

当不想捕获分组时,使用 ?:

console.log('2020-03-04'.replace(/(\d{4})-(\d{2})-(?:\d{2})/g,'$2/$3/$1'))
//"03/$3/2020"

console.log('2020-03-04'.replace(/(\d{4})-(?:\d{2})-(\d{2})/g,'$2/$3/$1'))
//"04/$3/2020"

//忽略分组后不存在编号,继续顺延往后编号

前瞻

正向前瞻,exp(?=assert)
负向前瞻,exp(?!assert)

exp和assert都是正则表达式,匹配到exp时还要判断assert是否符合,符合才会被匹配。只匹配exp。

console.log('a2*34v8'.replace(/\w(?=\d)/g,'X'))
//X2*X4X8

console.log('a2*34v8'.replace(/\w(?!\d)/g,'X'))
//aX*3XvX

ES6中的正则表达式

RegExp对象属性

global,是否全文搜索,默认false
ignoreCase,是否忽略大小写,默认false
multiline,是否多行搜索,默认false
lastIndex,当前表达式匹配内容的最后一个字符的下一位置
source,正则表达式的文本字符串

对象方法

test(str),用于测试字符串参数中是否存在匹配正则表达式模式的字符串,返回true或false

let phone='12345678910';
let reg=/^1\d{10}$/;
console.log(reg.test(phone))            //true

exec(str),一个在字符串中执行查找匹配的RegExp方法,它返回一个数组(未匹配到则返回 null)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值