加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-13 19:50:11 所属栏目:百科 来源:网络整理
导读:正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。 匹配中文字符的正则表达式:[u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评

正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。


匹配中文字符的正则表达式:[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"));????????}??}?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读