这是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到多个字符,而<>中没有字符。