• UID15
  • 登录2017-07-17
  • 粉丝48
  • 关注40
  • 发帖447
  • 主页
  • 金币1848枚
社区居民
喜欢达人
原创写手
janking 发布于2016-01-06 15:15
18/15524

65条最常用正则表达式,你要的都在这里了

楼层直达

最全面的65条最常用正则表达式

 

很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下。给自己留个底,也给朋友们做个参考。

最全面的常用正则表达式大全

一、校验数字的表达式

1 数字:^[0-9]*$

2 n位的数字:^\d{n}$

3 至少n位的数字:^\d{n,}$

4 m-n位的数字:^\d{m,n}$

5 零和非零开头的数字:^(0|[1-9][0-9]*)$

6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$

7 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$

8 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$

9 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$

10 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$

11 非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$

12 非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$

13 非负整数:^\d+$ 或 ^[1-9]\d*|0$

14 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$

15 非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$

16 非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$

17 正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

18 负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$

19 浮点数:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

二、校验字符的表达式

1 汉字:^[\u4e00-\u9fa5]{0,}$

2 英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$

3 长度为3-20的所有字符:^.{3,20}$

4 由26个英文字母组成的字符串:^[A-Za-z]+$

5 由26个大写英文字母组成的字符串:^[A-Z]+$

6 由26个小写英文字母组成的字符串:^[a-z]+$

7 由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$

8 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$

9 中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$

10 中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$

11 可以输入含有^%&',;=?$\"等字符:[^%&',;=?$\x22]+

12 禁止输入含有~的字符:[^~\x22]+

三、特殊需求表达式

1 Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

2 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?

3 InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$

4 手机号码:^(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}$

5 电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$

6 国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}

7 身份证号(15位、18位数字):^\d{15}|\d{18}$

8 短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$

9 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

10 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$

11 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

12 日期格式:^\d{4}-\d{1,2}-\d{1,2}

13 一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$

14 一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$

15 钱的输入格式:

16 1.有四种钱的表示形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$

17 2.这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:^(0|[1-9][0-9]*)$

18 3.一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:^(0|-?[1-9][0-9]*)$

19 4.这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分:^[0-9]+(.[0-9]+)?$

20 5.必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的:^[0-9]+(.[0-9]{2})?$

21 6.这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:^[0-9]+(.[0-9]{1,2})?$

22 7.这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$

23 8.1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$

24 备注:这就是最终结果了,别忘了"+"可以用"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里

25 xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$

26 中文字符的正则表达式:[\u4e00-\u9fa5]

27 双字节字符:[^\x00-\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))

28 空白行的正则表达式:\n\s*\r (可以用来删除空白行)

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

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

31 腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)

32 中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)

33 IP地址:\d+\.\d+\.\d+\.\d+ (提取IP地址时有用)

34 IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))

 

来源:头条


1人打赏
  • UID80
  • 登录2017-11-20
  • 粉丝63
  • 关注21
  • 发帖1124
  • 主页
  • 金币6473枚
社区居民
忠实会员
原创写手
潇潇宇 发布于2016-01-07 14:33
沙发F
非常好
  • UID4058
  • 登录2016-02-14
  • 粉丝0
  • 关注0
  • 发帖7
  • 主页
  • 金币25枚
社区居民
失足的骏马 发布于2016-01-15 14:32
板凳F
很不错呢
  • UID15
  • 登录2017-07-17
  • 粉丝48
  • 关注40
  • 发帖447
  • 主页
  • 金币1848枚
社区居民
喜欢达人
原创写手
janking 发布于2016-01-16 15:01
地板F
多谢@thomson_tmx   的打赏
  • UID10
  • 登录2016-10-31
  • 粉丝38
  • 关注4
  • 发帖386
  • 主页
  • 金币2543枚
社区居民
忠实会员
原创写手
bill 发布于2016-01-16 16:17
4楼F
// 编译email正则表达式
        private static final Pattern EMALE_PATTERN = Pattern.compile("\\w+@(\\w+.)+[a-z]{2,3}");
 
        // ;
 
        // content filter
        public static List&lt;String&gt; getEmails(String str) {
                Matcher matcher = EMALE_PATTERN.matcher(str);
 
                List&lt;String&gt; list = null;
                String email = null;
 
                while (matcher.find()) {
                        if (list == null) {
                                list = new ArrayList&lt;String&gt;();
                        }
 
                        email = matcher.group();
 
                        // 1269823266@qq.com&lt;img class
                        // 1721913835@qq.com&lt;br
                        // 742363596@qq.co
                        // tangxj@tiebahl
                        if (email.endsWith(CN_SUFFIX) || email.endsWith(COM_SUFFIX)) {
                                // right format
                        } else {
                                int pos = email.lastIndexOf(COM_SUFFIX);
                                if (pos &gt; 0) {
                                        email = email.substring(0, pos + COM_SUFFIX.length());
                                } else {
                                        pos = email.lastIndexOf(CN_SUFFIX);
                                        if (pos &gt; 0) {
                                                email = email.substring(0, pos + CN_SUFFIX.length());
                                        } else {
                                                continue;
                                        }
                                }
                        }
 
                        list.add(email);
 
                }
 
                return list;
        }
  • UID10
  • 登录2016-10-31
  • 粉丝38
  • 关注4
  • 发帖386
  • 主页
  • 金币2543枚
社区居民
忠实会员
原创写手
bill 发布于2016-01-16 16:20
5楼F
bill:// 编译email正则表达式
        private static final Pattern EMALE_PATTERN = Pattern.compile("\\w+@(\\w+.)+{2,3}");
 
       ...
回到原帖
上面是java使用正则获取邮箱地址的示例代码
  • UID15
  • 登录2017-07-17
  • 粉丝48
  • 关注40
  • 发帖447
  • 主页
  • 金币1848枚
社区居民
喜欢达人
原创写手
janking 发布于2016-01-18 09:23
6楼F
bill:上面是java使用正则获取邮箱地址的示例代码回到原帖
  • UID6600
  • 登录2016-02-27
  • 粉丝0
  • 关注0
  • 发帖14
  • 主页
  • 金币36枚
社区居民
jAmEs_ 发布于2016-02-13 23:11
7楼F
很实用
  • UID15
  • 登录2017-07-17
  • 粉丝48
  • 关注40
  • 发帖447
  • 主页
  • 金币1848枚
社区居民
喜欢达人
原创写手
janking 发布于2016-02-15 10:18
8楼F
jAmEs_:很实用回到原帖
多谢支持!记得跟小伙伴们 安利 一下
  • UID6060
  • 登录2017-07-14
  • 粉丝1
  • 关注0
  • 发帖14
  • 主页
  • 金币27枚
社区居民
lzh_me 发布于2016-02-15 11:54
9楼F
8错,谢谢分享。
  • UID5806
  • 登录2016-04-05
  • 粉丝0
  • 关注0
  • 发帖7
  • 主页
  • 金币34枚
社区居民
爱死寂寞人 发布于2016-02-16 09:22
10楼F
感谢分享,收藏备用
  • UID15
  • 登录2017-07-17
  • 粉丝48
  • 关注40
  • 发帖447
  • 主页
  • 金币1848枚
社区居民
喜欢达人
原创写手
janking 发布于2016-02-16 10:01
11楼F
lzh_me:8错,谢谢分享。回到原帖
 多谢支持!
  • UID163
  • 登录2017-03-07
  • 粉丝3
  • 关注5
  • 发帖30
  • 主页
  • 金币182枚
社区居民
小赵编程 发布于2016-02-16 11:32
12楼F
  • UID7461
  • 登录2016-06-08
  • 粉丝1
  • 关注0
  • 发帖211
  • 主页
  • 金币191枚
社区居民
忠实会员
android_chao 发布于2016-02-29 09:40
13楼F
收藏了,多谢分享
  • UID11656
  • 登录2016-06-08
  • 粉丝0
  • 关注0
  • 发帖4
  • 主页
  • 金币24枚
社区居民
dobert 发布于2016-05-05 16:48
14楼F
多谢啦
  • UID12603
  • 登录2016-06-23
  • 粉丝0
  • 关注0
  • 发帖1
  • 主页
  • 金币15枚
社区居民
qq_pIIfJq014663 发布于2016-06-20 15:43
15楼F
很棒
  • UID1690
  • 登录2017-02-15
  • 粉丝1
  • 关注6
  • 发帖101
  • 主页
  • 金币185枚
社区居民
原创写手
lalalala 发布于2016-07-28 11:37
16楼F
很不错呢
。。(●—●)。。我是萌萌哒的签名挡。。(●—●)。。游戏源码分享(●—●)(●—●)
  • UID12263
  • 登录2017-05-14
  • 粉丝0
  • 关注0
  • 发帖4
  • 主页
  • 金币248枚
Ether 发布于2016-07-29 18:57
17楼F
谢谢楼主
1 2
您没填页码……^^页码应该是数字才对吧!^^零页?你当我是实体书……^^负数页……你又调皮了!^^帖子君一共才 ^^ 页……^^本页就是第 ^^ 页。
perv die Page1of2 next
您需要登录后才可以回帖
发表回复
极贡献
技术问答
专题荟萃
程序人生
视觉设计
Android开发
iOS开发
编程语言
前端开发
后端开发
服务器架构
软件测试
运维方案
创业路上



最热文章墙

  • 79397/378   【精品推荐】200多种Android动画效果的强悍框架,太全了,不看这个,再有动画的问题,不理你了^@^

  • 45296/191   情人节福利,程序员表白的正确姿势:改几行代码就变成自己的表白了

  • 44990/0   Python爬虫:常用浏览器的useragent

  • 41473/260   【精品推荐】Android版产品级的音乐播放器源码,功能太强大了,最好的产品原型有木有?

  • 38683/145   省时省力的Android组件群来了,非常棒的原型参考

  • 30061/142   2016抢红包软件及源码

  • 29293/2   超全!整理常用的iOS第三方资源

  • 29289/71   原创表白APP,以程序员的姿势备战新年后的7夕,持续完善中!

  • 24354/160   Android版类似UC浏览器:非常赞,产品级的源码

  • 22868/30   麻省理工的一帮疯子,真的实现了随意操控万物!(绝对黑科技)

  • 22566/25   Android工程师面试题大全

  • 22492/27   2016程序员跳槽全攻略

  • 21953/9   GitHub上排名前50的iOS项目:总有一款你用得着

  • 20910/20   码魂:程序员的牛B漫画

  • 19063/85   Android小而全的博客源码:非常适合全面掌握开发技巧

  • 19051/73   【持续更新中】Android福利贴(二):资料源码大放送

  • 19018/10   2016年最全的Android面试考题+答案 精编版

  • 18920/42   一个绚丽的loading动效分析与实现!

  • 18765/3   吐槽那些程序员的搞笑牛逼注释

  • 17640/45   惊艳的App引导页:背景图片切换加各个页面动画效果

  • 17633/1   iOS 动画总结

  • 17510/82   仿京东商城客户端Android最新版,不错的原型和学习资料

  • 17470/104   Android带弹幕的视频播放器源码,来自大名鼎鼎的Bilibili弹幕网站

  • 17148/23   个人收集的Android 各类功能源代码

  • 16688/5   新一代Android渠道打包工具:1000个渠道包只需要5秒

  • 16618/21   Android福利第三波【Android电子书】

  • 16438/53   基于瀑布流的美女图片浏览App,有注释的源代码

  • 16418/81   【精品推荐】类似360安全卫士安Android源码:非常赞的产品原型

  • 16404/10   女程序员的梦,众网友的神回复

  • 16363/0   iOS中文版资源库,非常全

  • 16341/17   用JavaScript 来开发iOS和Android 原生应用:React Native开源框架中文版来啦

  • 16094/11   年会上现场review代码是怎么样的体验!

  • 16042/23   珍藏多年的素材,灵感搜寻网站

  • 15524/18   65条最常用正则表达式,你要的都在这里了

  • 14853/15   基于Android支付宝支付设计和开发方案

  • 14258/11   有木有这样一张酷图帮你集齐所有git命令超实用

  • 14189/17   什么是真正的黑客:收获12200+Stars,人气远超微软开源VS

  • 13970/46   在线音乐播放器完整版(商用级的源码):非常赞,可听免费高品质专辑

  • 13719/0   GitHub iOS 库和框架Top100 

  • 13671/61   【技巧一】搭配Android Studio,如何实现App远程真机debug?

  • 13566/7   用程序员的姿势抢过年的火车票

  • 13522/7   一张图搞定iOS学习路线,非常全面

  • 13149/10   成为Java顶尖程序员 ,看这11本书就够了

  • 13107/10   微信支付终于成功了(安卓,iOS),在此分享

  • 12998/18   一张图搞定Android学习路线,非常全面

  • 12810/29   【持续更新中】Android福利贴(一):资料源码

  • 12745/3   基于Node.js的强大爬虫,能直接发布抓取的文章哦

  • 12490/4   46 个非常有用的 PHP 代码片段

  • 12013/3   即时通信第三方库

  • 11452/8   流媒体视频直播方案

  • 11382/18   八个最优秀的Android Studio插件

  • 11256/9   B站建开源工作组:APP想支持炫酷弹幕的看过来

  • 11046/9   烧了5亿美金,这家神秘的公司即将颠覆人类未来!

  • 11031/2   【精品推荐】高质量PHP代码的50个实用技巧:非常值得收藏

  • 10952/10   中国黑客的隐秘江湖:攻守对立,顶尖高手月入千万美元

  • 10226/6   开箱即用!Android四款系统架构工具

  • 10016/10   十大技巧快速提升Android应用开发性能

  • 9973/3   10款GitHub上最火爆的国产开源项目——可以媲美西半球

  • 9919/1   Android性能优化视频,文档以及工具

  • 9808/0   基于node-webkit跨平台应用案例集之(一)

  • 返回顶部