-
[]范围类用法
查看全部 -
反向类取反
原来/[abc]g/可以匹配a,b,c
现在/[^abc]g/是匹配a,b,c以外的字符
查看全部 -
\t 水平制表符(Tab?)
\v 垂直制表符
\n 换行符号不解释
\r 回车符
\0 空字符
\f 换页符(frame?)
\cX 与X对应的控制字符(Ctrl + X)
查看全部 -
* + ? $ ^ . | \ ( ) { } [ ]
特殊含义字符,如果需要匹配,需要转义查看全部 -
元字符解释
查看全部 -
在JS中,正则表达式被包在两个'/'之间
可以直接写两个/,中间写出pattern来构造正则表达式对象
也可以使用构造函数new RegExp(字符串|已有正则表达式对象,模式)来创建
字符串对象的replace接收两个参数(str|RegExp, 匹配元素)
在正则表达式最后写上g(/???/g)为全局匹配,否则只匹配模式串中第一个合适的元素
i为忽略大小写
m多行搜索
查看全部 -
正则表达式有许多的规定,其中特殊字符必须转义,如下表
\b单词边界 border
\d数字
\\ \
\/ /
[]为区间,即其中的内容任取一个[ab]就是取a或者取b,还可以[a-zA-Z0-9-_]表示可以取大小写字母加上数字和横线下划线
()为分组,影响取值的结果,如^\(d{4})[\/-](\d{2})[\/-](\d{2})$
匹配年月日,其中年为(d{4}),取值为$1,以此类推,日为$3
查看全部 -
那必须的啊
查看全部 -
忽略分组?:
查看全部 -
记住string.replace(reg, str)可以匹配正则表达式
查看全部 -
查看全部
-
预定义类一览
查看全部 -
实例化
实例化有两种方式:字面量和构造函数
字面量:
var reg = /\bare\b/g;
var str = ‘my name are fuliping’;
str.replace(reg,’is’);//my name is fuliping
构造函数:
var reg = new RegExp(‘\\bare\b\’, ’g’);//变量1:字符串,变量2:修饰符
var str = ‘my name are fuliping’;
str.replace(reg,’is’);//my name is fuliping
元字符:
正则表达式有两种基本字符类型:原义文本字符和元字符。
元字符是在正则表达式中有特殊含义的非字符字符,常用元字符如下:
. 任意字符(any character)
| 或
\ 转义
() 分组
(?:) 忽略分组
{} 构建量词
[] 构建类,类表示符合某些特征的对象,一个泛指,而不是特指某个字符,eg:[a-z]
[^] 反向类,类取反,eg:[^a-z]
[a-z] 范围类,eg:[a-z], [A-Z], [a-zA-Z], [0-9]
\d 数字(digit)
\w 字母(word)
\b 单词边界(boundary)
\B 非单词边界
^ 以xxx开始(start of line)
$ 以xxx结束(end of line)
特殊元字符:
\t 水平制表符
\v 垂直制表符
\n 换行符
\r 回车符
\0 空字符
\f 换页符
\cX 于X对应的控制字符(如ctrl + X)
修饰符(对象属性)
g:global全局搜索,不添加,搜索到第一个匹配停止,默认false
i: ignore case忽略大小写,默认大小写敏感,默认false
m:multiple lines多行搜索,默认false
lastIndex:当前表达式匹配内容的最后一个字符的下一个位置
source:正则表达式的文本字符串
量词:
? 表示出现零次或一次(最多出现一次)
+ 表示出现一次或多次(至少出现一次)
* 表示出现零次或多次(任意次)
{n} 出现n次
{n, m} 出现n到m次
{n,} 至少出现n次
贪婪模式:
默认使用贪婪模式,如果要使用非贪婪模式,量词后加?即可,eg:/{3,6}?/g
分组():
通过分组实现反向引用,达到捕获分组内容的目的。
eg:’2019-08-07’.replace(‘(/\d{4})-(\d{2})-(\d{2})/g’, ’$2/$3/$1’);
忽略分组(?:***):
不希望捕获某些分组,只需要在分组内加上?:就可以。
前瞻:
前瞻就是在正则表达式匹配到规则的时候,向前检查是否符合断言,后顾/后瞻方向相反。
ps:正则表达式从文本头部向尾部解析,文本尾部方向,成为“前”。JS不支持后顾。
符合特定断言称为肯定/正向匹配,不符合称为否定/负向匹配。
正向前瞻:exp(?=assert)
负向前瞻:exp(?!assert)
eg:’a7&04k'.replace(‘/\w(?=\d)/g’, ‘A’);
正则表达式对象方法:
test():RegExp.prototype.test(str) 用于测试字符串参数中是否存在匹配正则表达式模式的字符串。
eg:var reg1 = /\w/;
var reg2 = /\w/g;
while(reg2.test(‘ab’)){
console.log(reg2.lastIndex);
}
exec(): RegExp.prototype.exec(str) 使用正则表达式模式对字符串执行搜索,并将更新全局RegExp对象的属性以反映匹配结果。如果没有匹配的文本,则返回null,否则返回一个结果数组。
数组内容:
index:声明匹配文本的第一个字符的位置
input:存放被检索的字符串 string
eg:var reg4 = /\d(\w)(\w)\d/g;
var ts = ‘$2ae4be7km9df5yt’;
while(ret = reg4.exec(ts)){
console.log(reg4.lastIndex);
console.log(reg4.index);
console.log(ret.toString());
}
字符串对象方法:
search(): String.prototype.search(reg) 用于检索字符串中的指定的字符串,或检索与正则表达式相匹配的子字符串。不执行全局匹配,会忽略g。
match():String.prototype.match(reg) 用于检索字符串,以找到一个或多个与regexp匹配的文本。结果对是否具有g标志影响很大。
查看全部 -
*.txt 星表示所有字符串
查看全部 -
一.实例化
1.字面量var reg=\/bis/b\g;
2.构造函数var reg=new RegExp('\\bis\\b',g);二.修饰符
1. g :global2. i :ignore case
3. m :多行,multiple lines查看全部
举报