RegExp

Regular Expressions For Regular,清晰解释正则网址

了解正则表达式

什么是正则表达式
正则表达式(regular expression)是一个描述字符模式的对象。

为什么要使用正则表达式
正则表达式能够进行强大的“模式匹配”和“文本检索与替换”功能。前端往往有大量的表单数据校验的工作,采用正则表达式会使得数据校验的工作量大大减轻

创建正则表达式

RegExp构造函数声明

第一个参数就是我们的模式“字符串”

var reg= new RegExp('katsuki')
//使用特殊字符,\转义
var reg= new RegExp('\\d\\w+'); \d\w+

第二个参数可选,模式修饰符

i: case-insensitive,表示忽略大小写
g: global,表示全局匹配
m: multiline,表示多行匹配
var reg = new RegExp('katsuki', 'ig')

字面量方式直接声明

var reg = /katsuki/gi;

直接量是字符匹配,不支持变量

支持正则表达式的字符串方法

search

返回第一次匹配时所在的索引值,如果匹配不到则返回-1

match

默认匹配字符串,返回一个数组
0:所匹配的字符
index:匹配第一个字符所在的索引
input:对字符串的引用

'katsuki'.match(/katsuki/)

全局匹配g,返回一个匹配所有字符串数组
如果匹配不到则返回null

'katsuki'.match(/k/g)

replace

替换字符串

'katsuki'.replace(/katsuki/, "katsukichan")

split

按照匹配的方式分割

'katsuki age 18   666'.split(/\s+/)

正则表达式的属性和方法

测试正则表达式用test方法,返回布尔值
格式:正则表达式.test(字符串)
正则表达式测试字符串是否匹配,返回true/false
测试正则表达式exec方法

/katsuki/.exec(字符串)

匹配规则

所有字母和数字都是按照字面量进行匹配,和字符串匹配等效

/katsuki/gi

字符类(只记小写字母即可)

. : 除换行以外的字符
\w : 代表数字或字母或下划线
\W : 非数字字母和下划线字符
\d : 数字
\D : 非数字
\s : 代表一个空格
\S : 空格以外的字符
\b : 匹配一个单词边界,也就是指单词和空格间的位置
\B : 匹配非单词边界。
PS:以上所有字符类都只是匹配  一个  字符

特殊符号

^ $ . * + ? = ! : | \ / () [] {}

[]: 代表任意“单个字符” ,里面的内容表示“或”的关系

-: 代表范围
^: 代表非

[^],^[]里才表示非

(): 表示分组(n是以最左边括号出现的顺序排列)

$1: 表示第一个分组
$n: 表示第n个分组(不能写在正则表达式里)
\n: 在正则分组后面使用,表示对第n个分组的引用(一定要写在正则表达式里)
编写的正则分组数量越少越好

|: 表示或者

分组说明案例

//小括号里有?:代表取消分组,
$reg = '/\[((?:\d+\.){3}\d+)\]/';
//无?:,分组正常\1表示调用第一个小括号内容(\d+\.){3}\d+)
$reg2 = '/\[((\d+\.){3}\d+)\1\]/';

锚点定位

^: 表示以什么开头
$: 表示以什么结尾

表示数量,对前一个字符计数

*: 代表0个或0个以上 <===>{0,}
+: 代表1个或1个以上 <===>{1,}
?: 代表0个或1<===>{0,1}

{}

\d{5}: 匹配5个数字
\d{5,10}: 匹配5个到10个数字
\d{5,}: 匹配5个或5个以上的数字

PS:
1)数量词*,+,{5,},会尽可能多的去匹配结果(贪婪)
2)在后面加一个?表示尽可能少的去匹配结果(非贪婪)

var str = 'aaaaaabbb';
str.match(/a{1,}?/g);//输出最少的a 即一个a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值