正则表达式语法备忘
郝伟 2022/09/23 14:20:50 星期五
本文是正则表达式的备份录,同时包括Python的部分实现。
推荐阅读
[0-9a-zA-Z_]{1,}, [\w_][+-]?[1-9][0-9]* 或 [0-9+-]?[1-9][0-9]*\d{17}[0-9xX][/u4e00-/u9fa5]^[0-9]*$/d{n}/d{n,}/d{m,n}(0|[1-9][0-9]*)[0-9]+(.[0-9]{2})?[0-9]+(.[0-9]{1,3})?/+?[1-9][0-9]*/-[1-9][0-9]*.{3}[A-Za-z]+[A-Z]+[a-z]+[A-Za-z0-9]+/w+((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])((\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])((\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(1\d\d|2[0-4]\d|25[0-5]|[1-9]\d|\d)非负浮点数(正浮点数 + 0): /d+(/./d+)?
正浮点数: (([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))
非正浮点数(负浮点数 + 0): ((-/d+(/./d+)?)|(0+(/.0+)?))
负浮点数: (-(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*)))
浮点数: (-?/d+)(/./d+)?
由26个英文字母组成的字符串: [A-Za-z]+
由26个英文字母的大写组成的字符串: [A-Z]+
由26个英文字母的小写组成的字符串: [a-z]+
由数字和26个英文字母组成的字符串: [A-Za-z0-9]+
由数字、26个英文字母或者下划线组成的字符串: /w+
email地址: [\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+
url: [a-zA-z]+://(/w+(-/w+)*)(/.(/w+(-/w+)*))*(/?/S*)?
年-月-日: /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/
月/日/年: /^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/
Emil: ([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)
电话号码: (d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?
匹配双字节字符(包括汉字在内): [^/x00-/xff]
匹配空行的正则表达式: /n[/s| ]*/r
匹配HTML标记的正则表达式: /<(.*)>.*<///1>|<(.*) //>/
匹配首尾空格的正则表达式: (^/s*)|(/s*$)
匹配Email地址的正则表达式: /w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*
匹配网址URL的正则表达式: [a-zA-z]+://(//w+(-//w+)*)(//.(//w+(-//w+)*))*(//?//S*)?
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线): [a-zA-Z][a-zA-Z0-9_]{4,15}
匹配国内电话号码: (/d{3}-|/d{4}-)?(/d{8}|/d{7})?
匹配腾讯QQ号: [1-9]*[1-9][0-9]*
验证用户密码(正确格式为: 以字母开头,长度在5~17 之间,只能包含字符、数字和下划线) [a-zA-Z]/w{5,17}
验证是否包含有 ^%&’,;=?ParseError: KaTeX parse error: Expected group after '^' at position 10: /"等字符: `[^̲%&',;=?/x22]+`
只能输入汉字: [\u4e00-\u9fa5]{0,}
只含有汉字、数字、字母、下划线不能以下划线开头和结尾: (?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+
只含有汉字、数字、字母、下划线,下划线位置不限: [a-zA-Z0-9_\u4e00-\u9fa5]+
2~4个汉字: @"^[\u4E00-\u9FA5]{2,4}
匹配手机:(1[3|4|5|7|8][0-9]{9})|1[0-9]{10}
第一位是【1】开头,第二位则则有【3,4,5,7,8】,第三位则是【0-9】,第三位之后则是数字【0-9】
re.match 对象matchfindallsubstudecompilesearch一个将正则变为逻辑视力的可视化在线工具 https://jex.im/regulex/
如 [0-9]*[1-9][0-9]* 可以转换为以下图形