常用正则表达式大全:数字、字符及特殊需求的正则表达式详解

常用正则表达式大全:数字、字符及特殊需求的正则表达式详解

正则表达式(Regular Expression)是用来描述或匹配一系列符合某个句法规则的字符串的模式。在编程和数据处理领域,正则表达式被广泛用于字符串匹配和替换。本文将详细介绍常用的正则表达式,包括数字校验、字符校验以及特殊需求的表达式,并结合使用场景,帮助您更好地理解和应用正则表达式。

一、数字校验的正则表达式

数字校验在数据验证中非常常见,如验证用户输入是否为合法的数字、金额等。以下是一些常用的数字校验正则表达式:

  1. 纯数字^[0-9]*$说明:匹配由0-9组成的任意长度的数字字符串。使用场景:验证输入是否为纯数字,如验证码、数字ID等。
  2. n位的数字^\d{n}$说明:匹配精确n位的数字。使用场景:验证固定长度的数字,如银行卡后四位、手机短信验证码等。
  3. 至少n位的数字^\d{n,}$说明:匹配至少n位的数字。使用场景:验证密码长度是否达到最低要求的数字位数。
  4. m-n位的数字^\d{m,n}$说明:匹配长度在m到n位之间的数字。使用场景:验证账号、密码的长度限制。
  5. 零和非零开头的数字^(0|[1-9][0-9]*)$说明:匹配以0或非零数字开头的数字。使用场景:验证整数,包括0和非零开头的数字。
  6. 非零开头的最多带两位小数的数字^([1-9][0-9]*)(\.[0-9]{1,2})?$说明:匹配非零开头的整数,且可以带一到两位小数。使用场景:验证金额输入,要求不能以0开头,且小数位不超过两位。
  7. 带1-2位小数的正数或负数^(-)?\d+(\.\d{1,2})?$说明:匹配正负数,且小数位为1到2位。使用场景:验证温度、重量等数据,允许负值和小数。
  8. 正数、负数、和小数^(-|\+)?\d+(\.\d+)?$说明:匹配整数或小数,包含正负号。使用场景:通用的数字输入验证,支持正负数和小数。
  9. 有两位小数的正实数^[0-9]+(\.[0-9]{2})?$说明:匹配正实数,且小数位为两位。使用场景:金额输入,要求精确到分。
  10. 非零的正整数^[1-9]\d*$说明:匹配非零开头的正整数。使用场景:数量、序号等不允许为0的正整数输入。

二、字符校验的正则表达式

字符校验主要用于验证字符串内容是否符合特定的字符集要求,如只能包含字母和数字等。

  1. 汉字^[\u4e00-\u9fa5]{0,}$说明:匹配任意长度的汉字字符。使用场景:验证姓名、中文地址等只能包含汉字的字段。
  2. 英文和数字^[A-Za-z0-9]+$说明:匹配由英文大小写字母和数字组成的字符串。使用场景:用户名、密码等只能包含英文和数字的输入。
  3. 长度为3-20的所有字符^.{3,20}$说明:匹配任意字符,长度在3到20之间。使用场景:验证昵称、留言内容长度等。
  4. 由26个英文字母组成的字符串^[A-Za-z]+$说明:匹配仅由英文字母组成的字符串。使用场景:验证英文姓名、城市名等。
  5. 由数字、26个英文字母或者下划线组成的字符串^\w+$说明:匹配由字母、数字、下划线组成的字符串。使用场景:验证账号、密码,符合一般编程变量命名规则的字符串。
  6. 中文、英文、数字包括下划线^[\u4E00-\u9FA5A-Za-z0-9_]+$说明:匹配中文、英文、数字和下划线。使用场景:用于昵称、备注等允许中英文混合的输入。

三、特殊需求的正则表达式

特殊需求的正则表达式用于验证特定格式的数据,如邮箱、URL、身份证号等。

  1. Email地址^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$说明:匹配标准的Email格式。使用场景:用户注册、邮箱绑定时的Email格式验证。
  2. 域名[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?说明:匹配合法的域名格式。使用场景:网站URL输入验证、链接抓取等。
  3. InternetURL[a-zA-z]+://[^\s]*^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$说明:匹配以http(s)://开头的URL。使用场景:网页链接验证、网络爬虫URL采集。
  4. 手机号码^1[3-9]\d{9}$说明:匹配中国大陆的手机号。使用场景:用户注册、手机号码绑定的验证。
  5. 身份证号(15位、18位数字)^\d{15}$|^\d{18}$|^\d{17}(\d|X|x)$说明:匹配15位或18位数字的身份证号,支持尾号为X的情况。使用场景:身份证号码的基本格式验证。
  6. 日期格式(yyyy-mm-dd)^\d{4}-\d{1,2}-\d{1,2}$说明:匹配年份-月份-日期格式的日期。使用场景:生日、日期输入的格式验证。
  7. IP地址\b(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))(\.(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)){3}\b说明:匹配IPv4格式的IP地址。使用场景:网络配置、日志分析中的IP地址提取和验证。

四、实用的正则表达式示例

  1. 强密码验证^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$说明:密码必须包含大小写字母和数字,长度在8-10位,不能使用特殊字符。使用场景:提高账号安全性的密码设置要求。
  2. 提取网页图片<img[^>]+src="([^">]+)"说明:匹配HTML中img标签的src属性,提取图片URL。使用场景:网页爬虫中提取网页中的图片链接。
  3. 匹配HTML标签<(\S*?)[^>]*>.*?</\1>|<.*? />说明:匹配HTML的开始标签和结束标签。使用场景:在文本处理中需要过滤或替换HTML标签时使用。

五、正则表达式测试工具

为了方便验证正则表达式的正确性,可以使用在线的正则表达式测试工具:

六、注意事项

  • 转义字符:在使用正则表达式时,需要注意转义字符。例如,在Java中使用正则表达式,需要对\进行双重转义,写成\\
  • 贪婪与懒惰匹配:正则表达式默认是贪婪匹配,即尽可能多地匹配字符。可以使用?来实现非贪婪匹配。
  • 测试与调试:复杂的正则表达式可能难以阅读和维护,建议在使用前充分测试,确保其匹配结果符合预期。
阅读剩余
THE END