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

RegExp对象

  • JavaScript通过内置对象RegExp支持正则表达式

RegExp对象实例化

  • 字面量

varpattern=/\bis\b/g;
  • 构造函数

varpattern=newRegExp('\\bis\\b','g');

修饰符

  • g:global,全文搜索,如果不添加,搜索到第一个匹配就停止。

  • i:ignorecase,忽略大小写,默认大小写敏感。

  • m:mutiplelines,多行搜索。

元字符

  • 正则表达式有两种基本字符类型组成。

    • 原义文本字符

    • 元字符

  • 元字符是在正则表达式中你有特殊含义的非字母字符。

  • *?$^.|\(){}[]

字符类

  • 可以使用元字符[]来构建一个简单的类。

  • 所谓类是指符合某些特征的对象,泛指,而不是特指某个字符。

  • 表达式[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:会否全文搜索

  • ignorecase:是否大小写敏感

  • multiline:多行搜索

  • lastIndex:是当前表达式匹配内容的最后一个字符的下一个位置

  • source:正则表达式的文本字符串

RegExp.prototype.test(str)

  • 用于测试字符串参数中是否存在匹配正则表达式模式的字符串

  • 如果存在返回true,否则返回false

RegExp.prototype.exec(str)

  • exec()方法在一个指定字符串中执行一个搜索匹配。返回一个结果数组或null。