前两天饿了么口试的时刻问到了正则,这里有时间简朴总结一下。(那天赋晓得许多大大都是硬着头皮看着API怼正则的 – -)
RegExp对象
JavaScript经由过程内置对象RegExp支撑正则表达式
RegExp对象实例化
字面量
var pattern = /\bis\b/g;
组织函数
var pattern = new RegExp('\\bis\\b', 'g');
修饰符
g: global,全文搜刮,假如不增加,搜刮到第一个婚配就住手。
i: ignore case,疏忽大小写,默许大小写敏感。
m: mutiple lines,多行搜刮。
元字符
正则表达式有两种基础字符范例构成。
原义文本字符
元字符
元字符是在正则表达式中你有特别寄义的非字母字符。
* + ? $ ^ . | \ ( ) { } [ ]
字符类
能够运用元字符
[]
来构建一个简朴的类。所谓类是指相符某些特性的对象,泛指,而不是特指某个字符。
表达式
[abc]
把字符a、b、c归为一类,表达式能够婚配这类字符。(相当于或)
字符类取反
运用
^
建立反向类/负向类。反向类的内容是不属于某类的内容。
表达式
[^abc]
示意不是a或b或c的内容。
局限类
能够运用
[a-z]
示意从a-z的恣意字符。(闭区间)在
[]
内构成的类内部是能够连写的[a-zA-Z]。
预定义类
字符 | 寄义 |
---|---|
. | 除了回车符和换行符以外的一切字符 |
d | 数字字符 |
D | 非数字字符 |
s | 空白符 |
S | 非空白符 |
w | 单词字符(字母、数字下划线) |
W | 非单词字符 |
边境
字符 | 寄义 |
---|---|
^ | 以xxx最先 |
$ | 以xxx完毕 |
b | 单词边境 |
B | 非单词边境 |
量词
字符 | 寄义 |
---|---|
? | 涌现0次或一次 |
+ | 涌现1次或屡次 |
* | 涌现0次或屡次 |
{n} | 涌现n次 |
{n,m} | 涌现n-m次 |
{n,} | 最少涌现n次 |
JS正则贪欲形式与非贪欲形式
非贪欲形式
让正则表达式尽量少的婚配,也就是说一旦胜利婚配不再继承尝试就黑白贪欲形式。
做法是在量词背面加上?
‘123456789’.match(/d{3,5}?/g);
分组
运用
()
能够到达分组的功能使量词作用于分组
或
运用|
能够到达或的效果。
对象属性
golbal:会否全文搜刮
ignore case:是不是大小写敏感
multiline:多行搜刮
lastIndex:是当前表达式婚配内容的末了一个字符的下一个位置
source:正则表达式的文本字符串
RegExp.prototype.test(str)
用于测试字符串参数中是不是存在婚配正则表达式形式的字符串
假如存在返回true,不然返回false
RegExp.prototype.exec(str)
exec() 要领在一个指定字符串中实行一个搜刮婚配。返回一个效果数组或 null。