正则表达式嵌入了条件,就是执行了一定的逻辑。
如果不使用嵌入条件,我们也可以使用或者|元字符来列举解决
条件语句,就是分支结构,列举可以实现。
已经知道的条件
?匹配前面的一个字符或者表达式,如果存在的话……可以存在,也可以不存在,匹配{0,1}
?= 向前查找,如果后面符合的话......
?<= 向后查找,如果前面符合的话.....
判断回溯引用是否存在的条件逻辑
(<[aA])>.+(?(1)\s*</[aA]>)
注意这个格式(?(1)AAA) 表示引用1如果存在,就继续匹配AAA。
引用1特指前面的()中的子表达式是否存在
如果不存在也可以匹配
(?(1)AAAA|BBB)
如美国号码的匹配模式
123-456-7890
(123)456-7890
只有这两种的数据格式才是正确的
(()?(\d{3})(?(1))|-)(\d{3}-\d{4}) 这个测试没有通过
前后查找条件判断
判断向前,向后有无这个文本
如美国的邮政编码
11111
22222-6666
可以写
\d{5}(-\d{4})?
也可以写
\d{5}(?(?=-)-\d{4}) 这个测试没有通过
嵌入前后查找的条件的模式很少见,忽略吧
所谓的嵌入条件,就是:只有但条件得到或者没有得到时,对应表达式才会被匹配。
关于JS中的正则,请参考本人收录的专题文章!