两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 |
it:skills:正則表達式 [2021-11-28 09:07] – [表] goldentianya | it:skills:正則表達式 [2023-04-22 07:12] (当前版本) – [正則表達式] goldentianya |
---|
====== 正則表達式 ====== | ====== 正則表達式 ====== |
| |
| reg reguläre Ausdruck |
| |
| [[https://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F|語法說明(維基百科)]] |
| [[https://regex101.com/|Playground]] |
| |
| |
| |
^ 特殊符号 ^ 描述 | 示例 | 示例意义 | | ^ 特殊符号 ^ 描述 | 示例 | 示例意义 | |
| <color #ff7f27>''%%|%%''</color> | 管道符号,表示选择其中一个进行匹配 | ''re1| re2'' | 选择匹配正则表达式re1或者re2 | | | <color #ff7f27>''%%|%%''</color> | 管道符号,表示选择其中一个进行匹配 | ''re1| re2'' | 选择匹配正则表达式re1或者re2 | |
| <color #ff7f27>''%%.%%''</color> | 匹配除去\n之外的任意字符 | d.d | 表示匹配d与d之间为任意字符的情况,如“did”“d2d”等 | | | <color #ff7f27>''%%.%%''</color> | 匹配除去\n之外的任意字符 | d.d | 表示匹配d与d之间为任意字符的情况,如“did”“d2d”等 | |
| <color #ff7f27>''%%^%%''</color> | 匹配字符串起始部分 | ^my | 表示任何以my作为开始的字符串 | | | <color #ff7f27>''%%^%%''</color> | 匹配字符串起始部分 | ''^my'' | 表示任何以my作为开始的字符串 | |
| <color #ff7f27>''%%$%%''</color> | 匹配字符串终止符 | bye$ | 表示匹配任何以bye结束的字符串 | | | <color #ff7f27>''%%$%%''</color> | 匹配字符串终止符 | bye$ | 表示匹配任何以bye结束的字符串 | |
| <color #ff7f27>''%%*%%''</color> | 匹配0或者多次左端出现的正则表达式 | [0-9]* | 表示匹配以任意个数字开始的字符串 | | | <color #ff7f27>''%%*%%''</color> | 匹配0或者多次左端出现的正则表达式 | [0-9]* | 表示匹配以任意个数字开始的字符串 | |
| <color #ff7f27>''%%?%%''</color> | 匹配0次或者1次左端出现的正则表达式 | [0-9]? | 表示匹配以0个或者1个数字开始的字符串 | | | <color #ff7f27>''%%?%%''</color> | 匹配0次或者1次左端出现的正则表达式 | [0-9]? | 表示匹配以0个或者1个数字开始的字符串 | |
| <color #ff7f27>''%%{N}%%''</color> | 匹配N次左端出现的正则表达式 | [0-9]{N} | 匹表示配以N个数字开始的字符串 | | | <color #ff7f27>''%%{N}%%''</color> | 匹配N次左端出现的正则表达式 | [0-9]{N} | 匹表示配以N个数字开始的字符串 | |
| <color #ff7f27>''%%{M,N}%%''</color> | | | | | | <color #ff7f27>''%%{M,N}%%''</color> | 匹配M次到N次左端出现的正则表达式 | [0-9]{M,N} | 匹表示配以M个到N个数字开始的字符串 | |
| <color #ff7f27>''%%[...]%%''</color> | | | | | | <color #ff7f27>''%%[...]%%''</color> | 匹配来自括号中字符集的任意一个 | [abcd] | 表示匹配a或者b或者c或者d | |
| <color #ff7f27>''%%[.-.]%%''</color> | | | | | | <color #ff7f27>''%%[.-.]%%''</color> | 匹配从.到.之间的任意一个字符 | [a-g] | 表示匹配a到g之间的任意一个字符,如a或b... | |
| <color #ff7f27>''%%[^...]%%''</color> | | | | | | <color #ff7f27>''%%[^...]%%''</color> | 不匹配此字符集中的任何一个字符 | ''[^abc]'' | 表示匹配不是字符a或b或c的任意字符 | |
| <color #ff7f27>''%%()%%''</color> | | | | | | <color #ff7f27>''%%()%%''</color> | 对正则表达式进行分组或者匹配子组 | ([0-9]{3})? | 表示匹配三个数字出现一次或者不出现的情况 | |
| <color #ff7f27>''%%\d\D%%''</color> | | | | | | <color #ff7f27>''%%\d\D%%''</color> | \d任何一个十进制数字,\D任何非数字 | \d\d\d | 匹配三个数字的字符串 | |
| <color #ff7f27>''%%\w\W%%''</color> | | | | | | <color #ff7f27>''%%\w\W%%''</color> | \w任何字母字符,\W任何非字母字符 | \w+ | 匹配一个由字母字符组成的字符串 | |
| <color #ff7f27>''%%\s\S%%''</color> | | | | | | <color #ff7f27>''%%\s\S%%''</color> | \s任何空格字符,\S任何非空格字符 | of\sthe | 匹配of和the之间有任何空格字符的情况 | |
| <color #ff7f27>''%%\b\B%%''</color> | | | | | | <color #ff7f27>''%%\b\B%%''</color> | \b任何单词边界,\B任何非单词边界 | \bthe | 任何以the开始的字符串 | |
| <color #ff7f27>''%%\N%%''</color> | | | | | | <color #ff7f27>''%%\N%%''</color> | 匹配已保存的子组N | price:\N | 匹配price:后面加已保存的子组N的形式 | |
| <color #ff7f27>''%%\c%%''</color> | 仅按照c的字面意思进行匹配 | '' \*'' | 匹配字符\* | | | <color #ff7f27>''%%\c%%''</color> | 仅按照c的字面意思进行匹配 | '' \*'' | 匹配字符\* | |
| <color #ff7f27>''%%\A\Z%%''</color> | \A匹配字符串的开始,\Z匹配字符串的结尾 | \Acar | 匹配以car开始的字符串 | | | <color #ff7f27>''%%\A\Z%%''</color> | \A匹配字符串的开始,\Z匹配字符串的结尾 | \Acar | 匹配以car开始的字符串 | |
| |
| ====== 密码 ====== |
| 8个字符并包括一个大小写和数字 |
| /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/gm |
| |
| 8个字符并包括一个大小写和数字、特殊字符 |
| ^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$ |
| |
| ===== Javascript 案例 ===== |
| <code |> |
| var pattern = /^(?<content>[^|]+)+(\|(?<color>[a-z]+))?$/ |
| let match = "abc|gray".match(pattern) |
| let color = undefined |
| var cl = color || match.groups["color"] |
| expect(cl).to.equal('gray'); |
| |
| match = "aaaa".match(pattern) |
| expect(match.groups["color"]).to.equal(undefined) //不是 undefined |
| match = "aaaa|".match(/^(?<content>[^|]+)+(\|(?<color>[a-z]*))?$/) |
| expect(match.groups["color"]).to.equal("") |
| </code> |