一句js正则的解释

来源:互联网 发布:python turtle库详解 编辑:程序博客网 时间:2024/04/28 06:50

这是JQUERY源码中的一句,
// A simple way to check for HTML strings or ID strings
// (both of which we optimize for)
var quickExpr = /^[^<]*(<(.|/s)+>)[^>]*$|^#(/w+)$/

以下是对上面这个正则的解释

把/^[^<]*(<(.|/s)+>)[^>]*$|^#(/w+)$/分为两部分。
^[^<]*(<(.|/s)+>)[^>]*$与^#(/w+)$,匹配这两部分都OK。

1、先来看看第2部分(因为比较简单)
#(/w+)$ -- 以#开始,后面1到多个字符([a-zA-Z_0-9]),$是行尾。
#24jljjfsl -- 匹配。
#fsaf00fsd -- 匹配。
#2344%$#%# -- 不匹配。

2、再来看看第1部分。
^[^<]*(<(.|/s)+>)[^>]*$

^ -- 匹配行开始。
[^<]* -- 零到多个非'<'的任何字符。
(<(.|/s)+>) -- 以<开始,'.'是任意字符,'/s'空白字符。在<后跟随1到多个任意字符或者空白字符,以>结尾。
[^>]*$ -- 非>的任意字符零到多个,$行尾。

afdsa<html>fdas -- 匹配!其中afdsa匹配[^<]*,<html>匹配(<(.|/s)+>),最后fdas匹配[^>]*$。
<html>aa -- 匹配!其中""(空字符串)匹配[^<]*。它匹配0到多个,空字符串就是0个。
<html> -- 匹配!
fdsa<html<fds>fda>fdsa -- 匹配!其中<html<fds>fda>匹配(<(.|/s)+>)
fdsa<>fdsa -- 不匹配!(<(.|/s)+>)要求在<与>中要有1到多个字符,而<>中没有字符。

原创粉丝点击