正则的[]与()

对正则的模糊不清, 造就了今天的这篇文章

可以配合这个正则测试工具 http://tool.oschina.net/regex 阅读本文

首先是 [] 这个, 这个不管里边写多少, 写的是什么, 终究只能匹配一个字符, 而不是多个.

比如 [15|13] 这个匹配出来的是 1或5或|或3 (注: 也就是说任何正则里的特殊字符, 除^在最前外, 在[]里, 都当作是待匹配的一个字符来看待), 而不是15或13, 如果需要匹配的结果是后者, 可以使用()

即(15|13),  关于(), 他匹配出的是一个串中的子字符串

比如匹配身份证的正则  ^(d{6})(d{4})(d{2})(d{2})(d{3})([0-9]|X)$ 

大量使用了(), 说明了在匹配的结果中, 前6位, 然后4位, 2位, 2位 3位, 1位都可以去捕获

比如 410181 2016 12 20 121 X

当然了, 目前还没有这个身份证号码了, 中间我以空格形式格开了, 每个部分, 都可以在匹配结果中去捕获到, 这样做, 个人理解可以使获取某些值, 比如说, 出生在哪年, 哪月 更容易得到, 另外, 也方便进一步的验证了.

关于捕获, 以及后向(一说反向, 一说逆向), 可以参考这里的说明 http://www.regexlab.com/zh/regref.htm 使用浏览器搜索 反向引用

关于  ()  可以参考我的 这篇日志

原文地址:https://www.cnblogs.com/debmzhang/p/3953256.html