zepto.js中正则表达式的记录

Mar 19, 2015

362

前段时间,看了zepto.js的源码,顺便对正则表达式做了一些回顾。

首先,先来看一下正则表达式的一些常见语法。

1、 (pattern)、(?:pattern)、(?=pattern)、(?!pattern)字符的说明

  • (pattern):匹配pattern并捕获该匹配的子表达式。如:"mytest".match(/y(test)/ig); //["ytest", "test"];
  • (?:pattern):匹配pattern并不捕获匹配的子表达式。如:"mytest".match(/y(?:test)/ig); //["ytest"];
  • (?=pattern):执行正向预测先行搜索的子表达式,该表达式匹配处于匹配的字符串的起始点的字符串,是一个非捕获匹配。如:"mytest".match(/y(?=test)/ig); //["y"];
  • (?!pattern):执行反向预测先行搜索的子表达式,该表达式匹配不处于匹配的字符串的起始点的搜索字符串,也是一个非捕获匹配。如:"mytest".match(/y(?!est)/ig);//["y"]。

2、RegExp对象与正则表达式字面量

看一下以下两个正则表达式:

var p1 = /\stest/i;
p1.test(('it test'); //true;

var p2 = new RegExp('\\stest', 'i');
p2.test('it test');//true

p1 和 p2是两个完全等价的正则表达式。需要注意的是,传递给RegExp构造函数的两个参数都是字符串,所以所有元字符都必须双重转义,如p2中的\s必须转义为\s,才能表示为空白字符,同时不能把正则表达式字面量直接传递给RegExp构造函数。

现在,我们来看一下zepto.js中出现的一些正则表达式。

  • /^\s*<(\w+|!)[^>]*>/ :检测空白字符(允许0个或多个)开头的标签或者doctype标签;
  • /^<(\w+)\s*/?>(?:</\1>|)$/ :检测html中的单标签,如<a></a>,<br />;
  • /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)/>/ig : 检测一些自定义的HTML单标签;
  • /^(?:body|html)$/i : 非捕获检测body标签或者html标签;
  • /([A-Z])/g :检测大写字母;
  • new RegExp('(^|\s)' + name + '(\s|$)') : 如new RegExp('(^|\s)active(\s|$)') 与 /(^|\s)active(\s|$)/正则表达式相同,这个表达式用于检测html标签class属性中出现的类。

JavaScript 」相关文章

Wen's Blog

文章归档 » 文章标签 » 博主:吴文伟,Web开发爱好者,专注于前端开发,该博客用于记录和分享平时遇到的一些问题以及知识。

订阅

联系方式

链接