正则表达式的使用,含匹配验证、提取过滤,常见公式分享,复制即用!

发表日期: 2020-12-30

1、匹配验证

1.1使用方法

ElemenUi的用法:

Js用法,也是2个/夹住,返回True或False

console.log(RegExp(/^([1-9][0-9]*)$/).test('你好123123'))COPY

狐表用法,返回True或False

Dim rgx As New RegularExpressions.Regex("^-?[0-9]\d*$") 
Output.show(rgx.IsMatch("你好123123"))

1.2验证数字类的表达式

整数:^-?[0-9]\d*$
正整数:^([1-9][0-9]*)$
正整数+0:^([0-9][0-9]*)$
负整数:^(-[1-9][0-9]*)$
负整数+0:^0${1,1}|^(-[1-9][0-9]*)$
正整数+负整数,不含0:^(-)?[1-9][0-9]*$
正数:^(([1-9]+[0-9]*.{1}[0-9]+)|bai([0].{1}[1-9]+[0-9]*)|([1-9][0-9]*)|([0][.][0-9]+[1-9]*))$
正数 +0 :(0|^(([1-9]+[0-9]*.{1}[0-9]+)|bai([0].{1}[1-9]+[0-9]*)|([1-9][0-9]*)|([0][.][0-9]+[1-9]*))$)
负数:^-(([1-9]+[0-9]*.{1}[0-9]+)|([0].{1}[1-9]+[0-9]*)|([1-9][0-9]*)|([0][.][0-9]+[1-9]*))$
负数+0 :^0${1,1}|^-(([1-9]+[0-9]*.{1}[0-9]+)|([0].{1}[1-9]+[0-9]*)|([1-9][0-9]*)|([0][.][0-9]+[1-9]*))$
正数+负数,不含0:^(-)?(([1-9]+[0-9]*.{1}[0-9]+)|([0].{1}[1-9]+[0-9]*)|([1-9][0-9]*)|([0][.][0-9]+[1-9]*))$
正数+负数+0:^0${1,1}|^(-)?(([1-9]+[0-9]*.{1}[0-9]+)|([0].{1}[1-9]+[0-9]*)|([1-9][0-9]*)|([0][.][0-9]+[1-9]*))$
金额格式,即是 正数+0,且最多2位小数:(^(([1-9]([0-9]+)?)|(0{1}))(\.[0-9]{1,2})?$)
(结尾的{1,2}就是说允许支持1~2位小数,可以自行修改)

1.3验证字符类的表达式

至少1个中文:[\u4e00-\u9fa5]
只有英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
除换行符外的,长度为3-20的所有字符:^.{3,20}$
由26个英文字母组成的字符串:^[A-Za-z]+$
由26个大写英文字母组成的字符串:^[A-Z]+$
由26个小写英文字母组成的字符串:^[a-z]+$
由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
由数字、26个英文字母或者下划线组成的字符串: ^\w+$
中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$
中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$
以字母开头的6~18字符,可填字母、数字和下划线: ^[a-zA-Z][a-zA-Z0-9_]{5,17}$


1.4特殊需求的表达式

Email地址
1)只允许英文字母、数字、下划线、英文句号、以及中划线组成:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
2)名称允许汉字、字母、数字,域名只允许英文域名:^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$

域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
url连接:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}

第二代身份证号(18位数字):^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$
注意这个正则只是检查基础位数,并没有完全按照身份证规则校检,建议数据传到后端使用狐表自带的ValidPIN(身份证)百分百准确
短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$

帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$
强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
日期格式:^\d{4}-\d{1,2}-\d{1,2}
一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$
一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$
xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
双字节字符(包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)):[^\x00-\xff]
空白行的正则表达式(可以用来删除空白行):\n\s*\r

HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />
(网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)

首尾空白字符的正则表达式:^\s*|\s*$ 或 (^\s*)|(\s*$)
(可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)

腾讯QQ号(腾讯QQ号从10000开始):[1-9][0-9]{4,}
中国邮政编码(中国邮政编码为6位数字):[1-9]\d{5}(?!\d)
IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))


2、提取过滤

2.1使用方法

狐表用法,得到过滤后的结果

Dim rgx As New RegularExpressions.Regex("[0-9]") 
Output.show(rgx.Replace("你好123123",""))

2.2常见过滤表达式

去掉所有大写英文:[A-Z]
去掉所有小写英文:[a-z]
去掉所有数字 : [0-9]
去掉所有中文:[\u4e00-\u9fa5]
去掉所有空格+换行符:\s
去掉所有标点符号+换行 : [^a-zA-Z0-9\u4e00-\u9fa5]


2.3技巧说明

以上表达式可以用|组合起来用,例如

去掉所有小写英文+数字 : [a-z]|[0-9]

正则世界里,中括号内的^表示取反

例如我们想去掉所有标点符号,但是这实在太多了,一个个标点符号敲出来太麻烦,那我们可以反过来想

标点表符号:就是除大小写英文、数字、中文以外的东西,于是就有这个 [^a-zA-Z0-9\u4e00-\u9fa5]



随便看看

Copyright © 2016-2022 江门蓬江区华越科技公司 版权所有 | 承接软件定制开发,欢迎联系
粤ICP备17073215号