2018-01-03正则表达式高级用法——嵌入条件

正则表达式嵌入了条件,就是执行了一定的逻辑。
如果不使用嵌入条件,我们也可以使用或者|元字符来列举解决

条件语句,就是分支结构,列举可以实现。

已经知道的条件

?匹配前面的一个字符或者表达式,如果存在的话……可以存在,也可以不存在,匹配{0,1}
?= 向前查找,如果后面符合的话......
?<= 向后查找,如果前面符合的话.....

判断回溯引用是否存在的条件逻辑

(<[aA])>.+(?(1)\s*)

注意这个格式(?(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中的正则,请参考本人收录的专题文章!

你可能感兴趣的:(2018-01-03正则表达式高级用法——嵌入条件)