正则表达式

正则表达式
负责的字符串匹配处理规则, 应用广泛,可以应用于: java grep vi 等

字符集
[1234] 表示 1,2,3,4 之一
[^12]表示除了 1,2

[1-5]表示 1,2,3,4,5
[a-f]表示 a-f 之间的
[0-9a-fA-F]表示一个 16 进制字符
0[xX][0-9a-fA-F]{1,8}表示整数的 16 进制数表达式
[\w-]{8,15}表示 8-15 个字符、下划线、数字及“-”


预定义字符集
\d表示[0-9]
“.”点表示任意字符
\w表示单词字符 [0-9a-zA-Z_] 注:包含下划线“_”
\s表示匹配空白: \t \n \r \b \p
\D(不常用)表示非数字
\S(不常用)表示非空白
\W 不常用)表示非单词字符 [0-9a-zA-Z_]
{m,n}表示数词 m 到 n 个
{n}表示数词 n 个,比如表示“5 个以上”用{5}
?表示能出现 0到 1 次   {0,1}
+表示能出现 1到 n 次   {1,n}
*表示能出现 0到 n 次   {0,n}


正则表达式以“^”开头,“$”结尾

常用正则表达式写法
邮政编码
^[0-9][0-9][0-9][0-9][0-9][0-9]$
【解释】

0-9 的任意数字可出现 6 次
^[0-9]{6}$
【解释】0-9 的任意数字可出现 6 次
^\d{6}$
【解释】0-9 的任意数字可出现 6 次

用户名规则
^\w{8,10}$
【解释】可出现 8-10 个单词或字符

电话号码 +86 13912345678
^(\+86|0086)?\s?\d{11}$
【解释】 

"+"特殊字符,需要转义"\+"表示"加号"
\+86表示出现"\+86"这几个字符
(\+86|0086)?表示"+86"或"0086"出现0-1 次
\s?表示空白(空格)出现 0-1 次
\d{11}表示出现 11 位数字

身份证号码
^\d{15}(\d{2}[0-9xX])?$

一个点的坐标
^\d+(,\s*|\s+)\d+$
【解释】 

\d+表示出现 1 个及以上的数字
(,\s*|\s+)表示出现“逗号和 0 个及以上的空白”或“1 个以上的空白”
\d+表示出现 1 个及以上的数字
^\d+[,\s]\s*\d+$

答案规则(参考)    ^\s*A?(\s+|,\s*)B?(\s+|,\s*)C?(\s+|,\s*)D?\s*$
【解释】  \s*    可出现 0-n 个空格
            A?    A 可出现 0-1 次
           (\s+|,\s*)    "1 个以上空白"或"逗号,0 个及以上空白"
           D?\s*

日期 2011-01-30
^\d{4}-\d{2}-\d{2}$
^\d{4}(-\d{2}){2}$


IP 地址    192.168.0.2
^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
^\d{1,3}(\.\d{1,3}){3}$
^(\d{1,3}\.){3}\d{1,3}$   “.”是特殊字符,需要转义“\.”

弱口令正则, 至少8位,满足大写字母、小写字母、特殊符号、数字组合
/^(?=^.{8,}$)(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=(?:.*?[`~!@#$%*()_=+^&}{:;?.,<>|]){1})(?!.*\s)[0-9a-zA-Z`~!@#$%*()_=+^&}{:;?.,<>|]*$/

posted on 2021-01-20 13:15  渐行渐远的那些人  阅读(463)  评论(0编辑  收藏  举报