以下所有的正则表达式均适用于查找,如果需要检验字符串是否为某个
基础需求
匹配数值
匹配标准正整数:[1-9]\d*
匹配以,分隔的正整数:[1-9][\d,]*(第一位不能为0)
匹配以,分隔的正整数或正小数:[1-9][\d,]*\.?\d*|0\.?\d*[1-9]\d*(整数部分为0时小数部分至少有一位不为0、小数部分不会出现,来间隔)
匹配以,分隔的整数或小数:(\-|\+)?[1-9][\d,]*\.?\d*|0\.?\d*[1-9]\d*|0(在数字前可以允许正号或负号;允许0)
其他匹配数值的需求基本都可以从以上几个正则表达式中略作修改即可。如果练习的话可以尝试实现以下需求:匹配有1-3位小数的正数;匹配非负数;匹配至少n位数字
匹配某种内容
匹配英文字符:[A-Za-z]+
匹配英文或数字:[A-za-z0-9]+
匹配英文、数字以及下划线(用户名):[A-Za-z0-9_]+
匹配中文字符:[\u4e00-\u9fa5]+
匹配全角字符:[\uFF00-\uFFFF]+
其他匹配某种内容的需求基本上都可以从以上几个正则表达式中略作修改即可。如果练习的话可以尝试实现以下需求:匹配中文、英文、数字以及下划线;匹配大写英文字母
匹配日期
匹配日期(年月日之间可以使用/、.或-进行间隔;月份和日期可以1位或2位):d{4}[/.-]\d{1,2}[/.-]\d{1,2}
匹配日期(年月日之间可以使用/、.或-进行间隔;月份需为1-12之间,是否补0均可;日期需在1-31之间,是否补0均可):\d{4}[/.-](1[0-2]|0?[1-9])[/.-](1[0-9]|2[0-9]|3[0-1]|0?[1-9])
如果需要对匹配日期的年份范围也进行设置,可以参考对月份、日期范围的显示方法进行修改。如果练习的话可以尝试实现:年份需要在1900年-2099年之间。
实际需求
网页解析相关
匹配网页注释:<!–(.*?)–>
匹配href属性中的值:(?<=[Hh][Rr][Ee][Ff] ?= ?")[^"]+(?=")
其他属性中的值也可以通过修改上式获得
匹配dd标签中的值(标签中不能有其他标签嵌套,dd标签可以有属性值):(?<=\<dd[^>]*\>)[^<]+(?=\</dd\>)
其他标签中的值也可以通过修改上式获得
其他
匹配空白行:\n\s*[\r\n]
匹配E-Mail地址:[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?
匹配HTTP/HTTPS的Url:[Hh][Tt]{2}[Pp][Ss]?://[^\s]*
匹配腾讯QQ号:[1-9][0-9]{4,}
匹配身份证号:(\d{6})[12](\d{3})(\d{2})(\d{2})(\d{3})([0-9]|X)
匹配座机电话号码(000-00000000或0000-0000000):\d{3}-\d{8}|\d{4}-\d{7}
匹配3个以上连续的、相同的英文字母:([A-Za-z])\\1{3,}
匹配首尾空白字符(可以用来剔除行前、行后的空白字符):^\s*|\s*$