目前正则表达式主要有 PCRE 和 POSIX 两大标准,POSIX 又分为 BRE(grep、sed 等)、GNU BRE(GNU grep、GNU sed 等)、ERE(egrep、awk 等)、GNU ERE(grep –E、GNU awk 等)以及已经被废弃的 SRE 几种流派,彼此之间的语法都有差异。
由于 PCRE 标准被各种常用编程语言广泛支持,所以本项目中的正则表达式都是 PCRE 的。而 POSIX 标准目前主要被各种 Unix-like 系统内置命令所支持,例如常用的 Linux 系统中的 awk
, sed
等命令。
由于 Unix-like 系统众多,历史悠久,同一个命令有众多种实现版本(例如 awk
就有 awk
,gawk
,mawk
,nawk
等众多实现),并且同一个系统中不同的命令还可能存在使用不同流派的情况,很难做到兼容所有流派和命令,故本文档所列出的正则表达式仅兼容以下两种流派:
- GNU BRE(gsed - GNU sed)
- GNU ERE(gawk - GNU awk,ggrep - GNU grep)
如需了解更多,可以阅读维基百科 - Regular expression。
命令 |
正则表达式 |
GNU ERE |
^(+?86)?1(3[0-9]{3}|5[01235-9][0-9]{2}|8[0-9]{3}|7([0-35-9][0-9]{2}|4(0[0-9]|1[0-2]|9[0-9]))|9[0-35-9][0-9]{2}|6[2567][0-9]{2}|4((10|4[01])[0-9]{3}|[68][0-9]{4}|[579][0-9]{2}))[0-9]{6}$ |
GNU BRE |
^\(+\?86\)\?1\(3[0-9]\{3\}\|5[01235-9][0-9]\{2\}\|8[0-9]\{3\}\|7\([0-35-9][0-9]\{2\}\|4\(0[0-9]\|1[0-2]\|9[0-9]\)\)\|9[0-35-9][0-9]\{2\}\|6[2567][0-9]\{2\}\|4\(\(10\|4[01]\)[0-9]\{3\}\|[68][0-9]\{4\}\|[579][0-9]\{2\}\)\)[0-9]\{6\}$ |
命令 |
正则表达式 |
GNU ERE |
^(+?86)?1(3[0-9]{3}|5[01235-9][0-9]{2}|8[0-9]{3}|7([0-35-9][0-9]{2}|4(0[0-9]|1[0-2]|9[0-9]))|9[0-35-9][0-9]{2}|6[2567][0-9]{2}|4[579][0-9]{2})[0-9]{6}$ |
GNU BRE |
^\(+\?86\)\?1\(3[0-9]\{3\}\|5[01235-9][0-9]\{2\}\|8[0-9]\{3\}\|7\([0-35-9][0-9]\{2\}\|4\(0[0-9]\|1[0-2]\|9[0-9]\)\)\|9[0-35-9][0-9]\{2\}\|6[2567][0-9]\{2\}\|4[579][0-9]\{2\}\)[0-9]\{6\}$ |
命令 |
正则表达式 |
GNU ERE |
^(+?86)?1(3[0-9]{3}|5[01235-9][0-9]{2}|8[0-9]{3}|7([235-8][0-9]{2}|4(0[0-9]|1[0-2]|9[0-9]))|9[0-35-9][0-9]{2}|66[0-9]{2})[0-9]{6}$ |
GNU BRE |
^\(+\?86\)\?1\(3[0-9]\{3\}\|5[01235-9][0-9]\{2\}\|8[0-9]\{3\}\|7\([235-8][0-9]\{2\}\|4\(0[0-9]\|1[0-2]\|9[0-9]\)\)\|9[0-35-9][0-9]\{2\}\|66[0-9]\{2\}\)[0-9]\{6\}$ |
命令 |
正则表达式 |
GNU ERE |
^(+?86)?1(3(4[0-8]|[5-9][0-9])|5[012789][0-9]|7[28][0-9]|8[23478][0-9]|9[578][0-9])[0-9]{7}$ |
GNU BRE |
^\(+\?86\)\?1\(3\(4[0-8]\|[5-9][0-9]\)\|5[012789][0-9]\|7[28][0-9]\|8[23478][0-9]\|9[578][0-9]\)[0-9]\{7\}$ |
命令 |
正则表达式 |
GNU ERE |
^(+?86)?1(3[0-2]|[578][56]|66|96)[0-9]{8}$ |
GNU BRE |
^\(+\?86\)\?1\(3[0-2]\|[578][56]\|66\|96\)[0-9]\{8\}$ |
命令 |
正则表达式 |
GNU ERE |
^(+?86)?1(3(3[0-9]|49)[0-9]|53[0-9]{2}|8[019][0-9]{2}|7([37][0-9]{2}|40[0-5])|9[0139][0-9]{2})[0-9]{6}$ |
GNU BRE |
^\(+\?86\)\?1\(3\(3[0-9]\|49\)[0-9]\|53[0-9]\{2\}\|8[019][0-9]\{2\}\|7\([37][0-9]\{2\}\|40[0-5]\)\|9[0139][0-9]\{2\}\)[0-9]\{6\}$ |
命令 |
正则表达式 |
GNU ERE |
^(+?86)?192[0-9]{8}$ |
GNU BRE |
^\(+\?86\)\?192[0-9]\{8\}$ |
命令 |
正则表达式 |
GNU ERE |
^(+?86)?1749[0-9]{7}$ |
GNU BRE |
^\(+\?86\)\?1749[0-9]\{7\}$ |
命令 |
正则表达式 |
GNU ERE |
^(+?86)?174(0[6-9]|1[0-2])[0-9]{6}$ |
GNU BRE |
^\(+\?86\)\?174\(0[6-9]\|1[0-2]\)[0-9]\{6\}$ |
命令 |
正则表达式 |
GNU ERE |
^(+?86)?1(7[01]|6[257])[0-9]{8}$ |
GNU BRE |
^\(+\?86\)\?1\(7[01]\|6[257]\)[0-9]\{8\}$ |
命令 |
正则表达式 |
GNU ERE |
^(+?86)?1(65[0-9]|70[356])[0-9]{7}$ |
GNU BRE |
^\(+\?86\)\?1\(65[0-9]\|70[356]\)[0-9]\{7\}$ |
命令 |
正则表达式 |
GNU ERE |
^(+?86)?1(70[4789]|71[0-9]|67[0-9])[0-9]{7}$ |
GNU BRE |
^\(+\?86\)\?1\(70[4789]\|71[0-9]\|67[0-9]\)[0-9]\{7\}$ |
命令 |
正则表达式 |
GNU ERE |
^(+?86)?1(70[012]|62[0-9])[0-9]{7}$ |
GNU BRE |
^\(+\?86\)\?1\(70[012]\|62[0-9]\)[0-9]\{7\}$ |
命令 |
正则表达式 |
GNU ERE |
^(+?86)?14([14]0|41|[68][0-9])[0-9]{9}$ |
GNU BRE |
^\(+\?86\)\?14\([14]0\|41\|[68][0-9]\)[0-9]\{9\}$ |
命令 |
正则表达式 |
GNU ERE |
^(+?86)?14(4[01]|8[0-9])[0-9]{9}$ |
GNU BRE |
^\(+\?86\)\?14\(4[01]\|8[0-9]\)[0-9]\{9\}$ |
命令 |
正则表达式 |
GNU ERE |
^(+?86)?146[0-9]{10}$ |
GNU BRE |
^\(+\?86\)\?146[0-9]\{10\}$ |
命令 |
正则表达式 |
GNU ERE |
^(+?86)?1410[0-9]{9}$ |
GNU BRE |
^\(+\?86\)\?1410[0-9]\{9\}$ |
命令 |
正则表达式 |
GNU ERE |
^(+?86)?14[579][0-9]{8}$ |
GNU BRE |
^\(+\?86\)\?14[579][0-9]\{8\}$ |
命令 |
正则表达式 |
GNU ERE |
^(+?86)?147[0-9]{8}$ |
GNU BRE |
^\(+\?86\)\?147[0-9]\{8\}$ |
命令 |
正则表达式 |
GNU ERE |
^(+?86)?145[0-9]{8}$ |
GNU BRE |
^\(+\?86\)\?145[0-9]\{8\}$ |
命令 |
正则表达式 |
GNU ERE |
^(+?86)?149[0-9]{8}$ |
GNU BRE |
^\(+\?86\)\?149[0-9]\{8\}$ |