jquery js 正则表达式


/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/

可分成两段
^[^<]*(<(.|\s)+>)[^>]*$

匹配
<div> 或者<div></div> 或者 abc<xyx>xyz


^#([\w-]+)$

匹配
#xyz  #a23_  #-



ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
按层次分拆:
/
# 以#开头
(
(?: 匹配但不捕获内容也不分配组号
[\w\u00c0-\uFFFF\-] \w匹配字母数字下划线,\u00c0-\uFFFF匹配各国及各民族的文字 \-配备-
| 或逻辑判断
\\. 匹配形如\$这样的结构.可匹配除换行符以外的任意字符
)+ 这个结构重复一次或多次
)
/
可以匹配的字符串:
'#abc' '#标识' '#\\.' '#\\%' '#-'
实际上由于该表达式没有以$结尾,只要第一个字符是#第二个字符匹配[\w\u00c0-\uFFFF\-] 或者\\.,后面的字符输入什么都行。

CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
这个和前面的类似,可匹配:
'[name=\\%]sdsdsd~!@#$%^&*sdsd'
'[name=\'123\']'
'[name=\"123\"]'
'[name=\'123\"]'
'[name=---]'
'[name=123]'
'[name=abc]'
'[name=怪文字]'
'[name=\\%]sdsdsd~!@#$%^&*sdsd'


ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
分层分析:
/\[ 匹配[
\s* 匹配零到多个空字符
(
(?:[\w\u00c0-\uFFFF\-]|\\.)+ 匹配一个或多个字符,字符可以是字母、数字、下划线、多个国家或名族的字母文字、-、用\转义的特殊字符
)
\s* 匹配零到多个空字符
(?:
(\S?=) 匹配一个等号等号前面为零或一个非空字符
\s* 匹配零到多个空字符
(?:
(['"])(.*?)\3 匹配'或"加上零到多个非换行符加上'或"
\3是对(['"])这个组的引用,如果前面用的是'那么就匹配使用'。
(['"])是第三个分配了组号的组
|
(#? 匹配零到一个#
(?:[\w\u00c0-\uFFFF\-]|\\.)* 匹配零到多个字符,这个表达式和前面的一样就不解释了
)
|
)
|
)
\s* 匹配零到多个空字符

\] 匹配]
/
最简单的匹配为 '[a =]'
还可以匹配 '[a a=]','[a a=asdf]','[a a=\'asdf\']'
不能匹配'[a a=\'asdf]' 因为根据['"])(.*?)\3这一段,如果前面用了'后面也应该用'
不能匹配'[a aa=\'asdf']' 因为根据(\S?=)等号前面最多只能有一个非换行符


TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
分层分析:
/:(only|nth|last|first)-child 不解释了
(?:\(\s* (为正则表达式保留字符需转义。匹配(加零到多个空白符
(even|odd|
(?:[+\-]?\d+ 匹配零到多个+或-加上一个到多个数字。如 +1 +23 3
|
(?:[+\-]?\d*)?n\s* 至少应该有一个n,后面可以跟零到多个空白符,n的前面可以是零到多个[+\-]?\d*(如+3、+、-33)
(?:[+\-]\s*\d+)? 匹配一个+或者一个-,跟零到多个空白符,跟一到多个数字,如:+ 32。
)
)
\s*\) )为正则表达式保留字符需转义。匹配零到多个空白符加)
)?
/
最简单的匹配:':only-child'
还可以匹配:':only-child(even) '、
':only-child(odd) '、
':only-child(-23) '、
':last-child(+67n)'、
实际上由于没有^ $,只要匹配':only-child'的字符串都可以满足条件

POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
分层分析:
/:(nth|eq|gt|lt|first|last|even|odd) 不解释了
(?:\((\d*)\))? 匹配括号里面有零到多个数字,如 () (1) (34), ?出现表示0到1个这种结构
(?=[^\-]|$) ?=表示在这个位置的后面包含[^\-]|$结构的内容。^\-表示除了-以外的字符
/
最简单的匹配:'nth$'
还可以匹配:'nth34434' 34434中的第一个3是非-字符、'nth(2346546)$'
不能匹配'nth-34434' 因为nth后面跟的是-违反了(?=[^\-]|$)

PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值