20140829分享正则大纲

1, 正则符号

^ 开头,  [^]非

$字符结尾(每行)

\转义

.匹配除\n外其他词

?前面0次或者1次

*前面的0+次

{n} n次

{n,} n+次

{n,m} n-m次

| 或

[123][0,3]集合 , [123]匹配123是不成立

[1-3][a-z][A-Z]集合范围

[^123][^a-z]集合非

\d 0-9

\D 非数字

\n\r

\s 空,包含\f\n\r\t\v

\S 非空

()分组

2, 正则的组成

/正则/修饰符

new RegExp(‘正则‘, ‘修饰符‘);

修饰符: 

i不区分大小写

g全局

m多行(开启的话^$以每行为目标)

3, 组合

^1[3-8]\d{9}$

^\d{7}$ 7位数

^(\d{4})?\d{7}$ 加4位区号

^(\d{4}\-?)?\d{7}$ 加4位区号 -

^(0\d{3}\-?)?\d{7}$  前面必须是0

^((0\d{3}\-?)?\d{7}|(0\d{2}\-?)?\d{8})$ 3位区号

^(((\0\d{3}\-)?[1-9])|((0\d{2}\-)?[1-9]\d))\d{6}$ 3 4   //不正确,例子

4, 贪婪

1(.*)?0   => 10, 110, 100

1(.*?)0 => 132323230, 1超大规模fsdfsdf0

去注释:

<!\-\-([\s\S]*?)\-\->

\/\/(.*?)$

去标签:

<\/?([a-zA-Z]+?)>

5, 断言/预查/非捕获

?: 非捕获

?= 正向判定

?! 正向否判定

?<= 反向判定 (js不支持)

?<! 反向否判定(js不支持)

1, 非捕获

(?:\d)[a-zA-Z]+ //数字的那组将不会被后续捕获,通常用在match,exec上, 非捕获在某种程度上可以提高性能

2, 必须是字母+数字

^(?!\d+$)(?![a-zA-Z]+$)[0-9A-Za-z]{1,}$

=>转换成

^

(?!\d+$) //不是以全数字结束

(?![a-zA-Z]+$) //不是以全字母结束

[0-9A-Za-z]{1,} //数字+字母1位以上

$

3, 必须包含@的字母或数字

^(?=.*@.*)[[email protected]]{2,}$

4, 必须包含@, 但不能开头和结束

^(?=.*@.*)(?!^@(.*))(?!(.*)@$)[[email protected]]{2,}$

=>

^

(?=.*@.*) //必须包含@
            (?!^@(.*)) //不能以@开头
            (?!(.*)@$) //不能以@结束
            [[email protected]]{2,} //有@的2位以上字母或数字

$

6, 正则的方法

test 验证是否可以匹配

exec 同string.match差不多, 但据说有区别

/reg/.test(value)

/reg/ig.exec(value)

string.match(/reg/g)

string.split(/reg/)

7, 场景应用

1,采集图片路径: (js php思路一致)

var str = ‘把页面全部源代码抓来fffdsfsd<img src=1>fsdfsd<img alt= src=2 width=323>fsdf‘;
        var arr = str.match(/<img\s+[^>]+?>/g) || [];//先把全部图片标签抓过来
        arr.forEach(function(val){//遍历所有的结果,这里val就拿到了每个图片的标签str
            var str = val.match(/src=[‘"]?(.+?)[‘"]?/) || [‘‘, ‘‘];
            alert(str[1]);

});

2, 密码复杂度

var pass = ‘fsdfsdf‘;
        var arr = pass.match(/^(?:(\d+)|([a-z]+)|([A-Z]+)|([a-zA-Z]+)|([a-zA-Z0-9]+))$/);
        arr[0]//总结果
        arr[1]//纯数字
        arr[2]//纯小写字母
        arr[3]//纯大写字母

时间: 2024-10-05 04:44:55

20140829分享正则大纲的相关文章

【直播预告】云栖直播:阿里热修复产品HotFix2.0升级详解

全面--你知道吗?1891年,卡尔森纳做出的第一把瑞士军刀,只有螺丝刀和开罐器.经过一代又一代能工巧匠的打磨,这把刀陆续增加了锯子.剪刀.镊子.放大镜.改锥,甚至内藏激光.LED手电筒.USB记忆碟等功能. 稳定--你知道吗?公元前1500多年前,埃及人就已经用绳子和竖棍做成了简易天平,成为现代天平的雏型.天平是平衡的象征,托盘内不断增加的砝码,更是自信与质量的保障. 精准--你知道吗?1608年,荷兰眼镜商汉斯·利伯希用两块镜片发明了人类历史上第一架望远镜,随着技术的发展,大千世界在人类的探索

[转]当当推荐团队的机器学习实践

转自:http://www.csdn.net/article/2015-10-16/2825925 先说一下我的初衷.机器学习系统现在多红多NB这件事情我已不必赘述.但是由于机器学习系统的特殊性,构建一个靠谱好用的系统却并不是件容易的事情.每当看到同行们精彩的分享时,我都会想到,这些复杂精妙的系统,是怎样构建起来的?构建过程是怎样的?这背后是否有一些坑?有一些经验?是否可以“偷”来借鉴? 所以我希望做一个更侧重“面向过程”的分享,与大家分享一下我们在构建系统时的一些实践,一些坑,以及如何从坑里爬

数据库性能测试

12月10日,前阿里数据库团队资深DBA杨奇龙老师,在[DBA+社群]北京群进行了一次主题为"数据库性能测试"的线上分享.小编特别整理出其中精华内容,供大家学习交流.同时,也非常感谢杨奇龙老师对DBA+社群给予的大力支持. 嘉宾简介 杨奇龙 前阿里数据库团队资深DBA 主要负责淘宝业务线,经历多次11.11,有海量业务访问DB架构设计经验. 目前就职于有赞科技DBA,负责数据库运维工作,熟悉MySQL 性能优化,故障诊断,性能压测,对NoSQL感兴趣,希望与大家多多交流,彼此一起成长.

数据库性能测试---前阿里数据库团队资深DBA杨奇龙

杨奇龙 前阿里数据库团队资深DBA 主要负责淘宝业务线,经历多次11.11,有海量业务访问DB架构设计经验. 目前就职于有赞科技DBA,负责数据库运维工作,熟悉MySQL 性能优化,故障诊断,性能压测,对NoSQL感兴趣,希望与大家多多交流,彼此一起成长. 内容摘要 压测方法论 为什么要压测 影响因素 统计的指标 常用的压测工具 合理的压测平台 参考 这个是此次分享的大纲,本次分享其实相对比较简单,偏向于“纸上谈兵” 不涉及具体的实践操作,没有介绍工具如何使用 ,更多是介绍我对MySQL 压测的

小团队撬动大数据——当当推荐团队的机器学习实践

先说一下我的初衷.机器学习系统现在多红多NB这件事情我已不必赘述.但是由于机器学习系统的特殊性,构建一个靠谱好用的系统却并不是件容易的事情.每当看到同行们精彩的分享时,我都会想到,这些复杂精妙的系统,是怎样构建起来的?构建过程是怎样的?这背后是否有一些坑?有一些经验?是否可以“偷”来借鉴? 所以我希望做一个更侧重“面向过程”的分享,与大家分享一下我们在构建系统时的一些实践,一些坑,以及如何从坑里爬出来. 另外,我本次分享更侧重的是“小团队”,一是因为当当目前做ML的团队确实还比较小,其次是因为据

华为架构师8年经验谈:从单体架构到微服务的服务化演进之路

华为架构师8年经验谈:从单体架构到微服务的服务化演进之路 目录技术文章2016年6月28日 转自:http://www.58maisui.com/2016/06/28/a-327/?ref=myread 本次分享的大纲如下: 传统应用开发面临的挑战 服务化实践 服务化不是银弹 服务化架构的演进方向 一 .传统应用开发面临的挑战 挑战1– 研发成本高 主要体现在如下几个方面: 代码重复率高 在实际项目分工时,开发都是各自负责几个功能,即便开发之间存在功能重叠,往往也会选择自己实现,而不是类库共享,

从单体架构到微服务的服务化演进之路

本次分享的大纲如下: 传统应用开发面临的挑战 服务化实践 服务化不是银弹 服务化架构的演进方向 一 .传统应用开发面临的挑战 挑战1– 研发成本高 主要体现在如下几个方面: 代码重复率高 在实际项目分工时,开发都是各自负责几个功能,即便开发之间存在功能重叠,往往也会选择自己实现,而不是类库共享,主要原因如下: 从技术架构角度看,传统垂直架构的特点是本地API接口调用,不存在业务的拆分和互相调用,使用到什么功能就本地开发,非常方便,不需要过度依赖于其它功能模块: 从考核角度来看,共享很难推行.开发

.gitignore 瘦身秘诀

我们在使用 git 的时候经常会遇到这样一个问题,团队成员使用的编辑器很多,比如 vscode, vim, idea ,而它们产生的临时文件又各不相同,这时我们该怎么处理? 常见方法 将用到的编辑器产生的临时文件格式都添加到 .gitignore 文件中,所以最后它就变成这样或者更多: # Editor files # ################ *~ .*.swp .*.swo *.iml .idea tags .history .vscode 这样的问题: 需要修改 .gitignor

【分享】利用Apache的Htaccess Files命令限制访问文件类型,Files正则

如果你在你的模板文件夹中有很多PSD HTML模板,那么用接下来这个htaccess文件可以保护限制访问: 文件D:\WebSite\ZBPHP.COM\www\Tpl\.htaccess 全部源码如下: <Files ~ "\.(html?|tpl|psd|zip|rar)$"> Order Allow,Deny Deny from all </Files> [分享]利用Apache的Htaccess Files命令限制访问文件类型,Files正则,布布扣,b