前两天饿了么面试的时候问到了正则,这里有时间简单总结一下。(那天才知道很多大大都是硬着头皮看着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。


玩弄心里的鬼
1.2k 声望1.1k 粉丝