一句js正则的解释

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值