正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。
匹配中文字符的正则表达式:[u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了
匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
匹配空缺行的正则表达式:ns*r 评注:可以用来删除空缺行
匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?</1>|<.*?/> 评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
匹配首尾空缺字符的正则表达式:^s*|s*$ 评注:可以用来删除行首行尾的空缺字符(包括空格、制表符、换页符等等),非常有用的表达式
匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* 评注:表单验证时很实用
匹配网址URL的正则表达式:[a-zA-z]+://[^s]* 评注:网上流传的版本功能很有限,上面这个基本可以满足需求
匹配帐号是否正当(字母开头,答应5-16字节,答应字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 评注:表单验证时很实用
匹配国内电话号码:d{3}-d{8}|d{4}-d{7} 评注:匹配形式如0511-4405222或021-87888822
匹配腾讯QQ号:[1-9][0-9]{4,} 评注:腾讯QQ号从10000开始
匹配中国邮政编码:[1-9]d{5}(?!d) 评注:中国邮政编码为6位数字
匹配手机号码: 现在的手机号码增加了150,153,156,158,159,157,188,189 所以正则表达式如下:^(13[0-9]|15[0|3|6|7|8|9]|18[8|9])d{8}$ ------- 正则验证手机号,忽略前面的0,支持130-139,150-159。忽略前面0之后判定它是11位的。 /^0*(13|15)d{9}$/^0* --------- 手机号验证的正则为: varreg=/^0{0,1}(13[0-9]|15[7-9]|153|156|18[7-9])[0-9]{8}$/; varreg=/^0{0,1}(13[0-9]|15[0-9])[0-9]{8}$/; 移动手机号的验证正则为: varreg=/^0{0,1}(13[4-9]|15[7-9]|15[0-2]|18[7-8])[0-9]{8}$/; ============================================= <inputtype="text"id="mobile"name="mobile"onblur="if(value==''){value='请输进您的手机号'}"onfocus="if(value=='请输进您的手机号'){value=''}"value="请输进您的手机号"/> ??? ???<inputtype="button"name="china_mobile"value="校验是否是移动手机号"onclick="CheckChinaMobileID(document.getElementById('mobile').value)"/> ??? ???<inputtype="button"name="is_mobile"value="校验是否是手机号"onclick="CheckIsMobile(document.getElementById('mobile').value)"/>???functionCheckChinaMobileID(mobile){ ??????? ???????if(mobile==""){ ???????????alert("请填写手机号码!"); ???????????returnfalse; ???????} ???????if(isNaN(mobile)||(mobile.length!=11)){ ???????????alert("手机号码为11位数字!请正确填写!"); ???????????returnfalse; ???????} ???????varreg=/^0{0,1}(13[4-9]|15[7-9]|15[0-2]|18[7-8])[0-9]{8}$/; ???????if(!reg.test(mobile)) ???????{ ???????????alert("您的手机号码不是移动号码,请重新输进"); ??????????? ???????????returnfalse; ???????} ???????alert("大爷,这个真是移动的手机号"); ???????returntrue; ???} ???functionCheckIsMobile(mobile){ ??????? ???????if(mobile==""){ ???????????alert("请填写手机号码!"); ???????????returnfalse; ???????} ???????if(isNaN(mobile)||(mobile.length!=11)){ ???????????alert("手机号码为11位数字!请正确填写!"); ???????????returnfalse; ???????} ??????? ???????varreg=/^0{0,1}(13[0-9]|15[0-9])[0-9]{8}$/; ???????if(!reg.test(mobile)) ???????{ ???????????alert("您的手机号码不正确,请重新输进"); ??? ???????????returnfalse; ???????} ???????alert("这个真是手机号,是哪的我不知道"); ???????returntrue; ???} =============================================
匹配身份证:d{15}|d{18} 评注:中国的身份证为15位或18位
匹配ip地址:d+.d+.d+.d+ 评注:提取ip地址时有用
匹配特定数字: ^[1-9]d*$ //匹配正整数 ^-[1-9]d*$ //匹配负整数 ^-?[1-9]d*$ //匹配整数 ^[1-9]d*|0$ //匹配非负整数(正整数+0) ^-[1-9]d*|0$ //匹配非正整数(负整数+0) ^[1-9]d*.d*|0.d*[1-9]d*$ //匹配正浮点数 ^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配负浮点数 ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮点数 ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ //匹配非负浮点数(正浮点数+0) ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //匹配非正浮点数(负浮点数+0) 评注:处理大量数据时有用,具体应用时留意修正
匹配特定字符串: ^[A-Za-z]+$ //匹配由26个英文字母组成的字符串 ^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串 ^[a-z]+$ //匹配由26个英文字母的小写组成的字符串 ^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串 ^w+$ //匹配由数字、26个英文字母或者下划线组成的字符串 评注:最基本也是最常用的一些表达式
--------------------------- 正则表达式--验证手机号码:13[0-9]{9} 实现手机号前带86或是+86的情况:^((+86)|(86))?(13)d{9}$ 电话号码与手机号码同时验证:(^(d{3,4}-)?d{7,8})$|(13[0-9]{9})? 提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F)?*=?*('|")?(w||/|.)+('|"|?*|>)??? 提取信息中的邮件地址:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*?? 提取信息中的图片链接:(s|S)(r|R)(c|C)?*=?*('|")?(w||/|.)+('|"|?*|>)? 提取信息中的IP地址:(d+).(d+).(d+).(d+)???? 提取信息中的中国手机号码:(86)*0*13d{9}???? 提取信息中的中国固定电话号码:((d{3,4})|d{3,4}-|s)?d{8}???? 提取信息中的中国电话号码(包括移动和固定电话):((d{3,4}-|s)?d{7,14}? ------------------------------- 更严格的手机号码正则表达式写法 文章分类:Java编程 要更加正确的匹配手机号码只匹配11位数字是不够的,比如说就没有以144开始的号码段,
?
故先要整清楚现在已经开放了多少个号码段,国家号码段分配如下:
?
移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
?
联通:130、131、132、152、155、156、185、186
?
电信:133、153、180、189、(1349卫通)
?
详见:http://blog.myspace.cn/e/405268924.htm那么现在就可以正则匹配测试了,
?
Java代码importjava.io.IOException;??importjava.util.regex.Matcher;??importjava.util.regex.Pattern;???publicclassClassPathResource{?????publicstaticbooleanisMobileNO(Stringmobiles){????????????Patternp=Pattern.compile("^((13[0-9])|(15[^4,D])|(18[0,5-9]))d{8}$");????????????Matcherm=p.matcher(mobiles);????????????System.out.println(m.matches()+"---");????????????returnm.matches();????????}????????publicstaticvoidmain(String[]args)throwsIOException{????????????System.out.println(ClassPathResource.isMobileNO("18616155153"));????????}??}? (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|