javascript的正则表达式复习

参考资源:

w3cschool javascript regexp 菜鸟吧 javascript正则表达式

这里主要记录几个自己之前不是很熟悉的知识点,其他的知识点,上面两个网站中已有详细的参考

关于反向引用
          // 测试函数function matchReg(reg, str) {var result = str.match(reg);if(result) {console.dir(result);} else {console.log('match failed');}}var reg = /([A-Za-z]{0,6})\1/;var str = 'AndrewAndrew';// 测试通过matchReg(reg, str); //通过(?:pattern)的方式,不记录子表达式匹配的内容(本例中为Andrew)//所以\1对子表达式匹配内容的引用失败了//注意:这里强调的是子表达式所匹配的内容,而不是子表达式本身reg = /(?:[a-zA-Z]{0,6})\1/;// 测试不通过 matchReg(reg, str); 

关于子表达式的定义
           var parse_number = /^-?\d+(?:\.\d*)?(?:e[+\-]?\d+)?$/i;

这是一个解析数字的正则表达式,其中的子表达式有(?:\.\d*)和(?:e[+\-]?\d+)
\.和\-分别是对.和-的转义表达
顺便复习下.表示除换行符以外的其他字符
-一般用于[a-zA-Z0-9]表示匹配范围
如果其中没?:例如(\.\d*)那么按照先后顺序,反向引用的关系如下

  • \1-->(\.\d*)
  • \2-->(e[+\-]?\d+)

如果有更多的话,就以此类推\3 \4 \5....
再次强调,引用的是子表达式匹配的内容,是具体的文本

关于正向预查
         var reg = /I like (?=shanghai)/;var str = 'I like shanghai';matchReg(reg, str); //测试通过str = 'I like beijing';matchReg(reg, str); //不通过

跑下上面的代码,就马上理解什么算是正向预查了,如上面的例子,通过(?=pattern)的形式,正则 表达式预测下后面的内容是不是符合要求,如果是那就顺利匹配.
相对地,(?!=pattern)的使用意图正好与(?=pattern)相反,就不复述了

关于贪心和非贪心匹配模式
         // 贪心var reg = /\d{1,}/;var str = '1999';matchReg(reg, str); // result[0]为1999   能多匹配就多匹配// 非贪心reg = /\d{1,}?/;matchReg(reg, str); // result[0]为1   只匹配了一个

从上面的结果很容易看出"贪心"和"非贪心"的含义
pattern?这就表明非贪心匹配模式,一般情况就是贪心的

关于Regexp对象exec函数返回的结果
           // 关于返回结果是个什么// matchReg函数中console.dir(result)能说明问题,firebug中一看便知

关于string的replace函数
          function camelize(str) {return str.replace(/-(\w)/g, function(inputStr, p1) {console.log(p1);return p1.toUpperCase();});}console.log(camelize('background-color'));function uncamelize(str, sep) {sep = sep || '-';return str.replace(/([a-z])([A-Z])/g, function(inputStr, p1, p2) {console.log('p1:%s, p2:%s', p1, p2);return p1 + sep + p2;});}console.log(uncamelize('backgroundColor', '-'));

上面两个例子,主要用于说明replace函数的用法,当然还有search,split等函数可以充分利用正则表达式的优势

关于javascript正则表达式的最佳实践

就一句话:尽量的精简,不要复杂,利于读懂和维护!

转载于:https://www.cnblogs.com/AndyWithPassion/archive/2011/07/26/regexp_javascript.html

javascript正则表达式复习相关推荐

  1. 《JavaScript 正则表达式迷你书》知识点小抄本

    介绍 这周开始学习老姚大佬的<JavaScript 正则表达式迷你书> , 然后习惯性的看完一遍后,整理一下知识点,便于以后自己重新复习. 我个人觉得:自己整理下来的资料,对于知识重现,效 ...

  2. JavaScript正则表达式的模式匹配教程,并且附带充足的实战代码

    JavaScript正则表达式的模式匹配 引言 正文 一.正则表达式定义 二.正则表达式的使用 三.RegExp直接量 (1)正则表达式初体验 (2)深入了解正则 字符类 重复 选择 分组与引用 指定 ...

  3. JavaScript正则表达式快速判断技巧

    原文:JavaScript正则表达式快速判断技巧 这里是JS的正则的一点心得,并不是最完整的规则汇总,更侧重实际运用中的快速判断,初学者接触正则之后往往会被一堆星号括号给弄晕,有了一些速判技巧就能从整 ...

  4. javascript 正则表达式详解

    正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...

  5. 经典JavaScript正则表达式实战

    来源:http://www.cainiao8.com/web/js_note/js_regular_expression_blueidea.html 目录 1. 正则表达式实战...1    2. 匹 ...

  6. 温故知新 javascript 正则表达式

    温故知新 javascript 正则表达式 转载:http://www.cnblogs.com/libinqq/archive/2008/07/31/1257699.html 很长时间没看 正则表达式 ...

  7. javascript正则表达式小结

    总结了一下javascript正则表达式的内容.表格形式,一目了然.辅以Example图形解释. 一.元字符 二.反义字符 三.转义字符 四.重复匹配 五.分组/捕获 六.贪婪与惰性 七.修饰符 ex ...

  8. JavaScript正则表达式详解(一)正则表达式入门

    JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望 ...

  9. 好程序员web前端分享使用JavaScript正则表达式如何去掉双引号

    为什么80%的码农都做不了架构师?>>>    好程序员web前端分享使用JavaScript正则表达式如何去掉双引号,最近接了一个项目,项目需求需要用js正则表达式过滤掉页面文本域 ...

最新文章

  1. Cocos2d入门--3--向量的应用
  2. Java 继承 执行顺序
  3. 用python做web小项目_Python之路【第十八篇】Django小项目webQQ实现
  4. 基于Win10极简SonarQube C#代码质量分析
  5. IT英语2-编程词汇编程英语词汇
  6. java mysql 二级缓存_深入理解MyBatis中的一级缓存与二级缓存
  7. Latex除法a/b \frac{a}{b}
  8. 什么是armv6和armv7
  9. word文档如何插入目录
  10. arduino最大电压_制作Arduino功率计测量电压电流及功耗
  11. 13 函数列与函数项级数
  12. 深度学习平台的搭建(anaconda-pytorch-pycharm)
  13. C#实现微信公众号群发消息(解决一天只能发一次的限制)实例分享
  14. Google中国博客开通啦~!!
  15. iOS7最佳实践:一个天气App案例
  16. 58同城私有化:错过移动红利,吃流量老本,如何挽回崩塌的形象?
  17. 智慧消防管网水压监测系统解决方案
  18. IOS SDK详解之拍照/相册(默认+自定义拍照界面)
  19. AcWing P378 骑士放置 题解
  20. jsp+springboot+ssm绘本馆活动报名系统javaEE图书借阅管理购买系统

热门文章

  1. u-boot移植随笔:解决引导内核遇到undefined instruction的错误
  2. 【Flink】FLink 反序列化空指针 java.lang.String.<init> SimpleStringSchema
  3. 【Elasticsearch】Elasticsearch如何实现 SQL语句中 Group By 和 Limit 的功能
  4. 【ElasticSearch】Es 源码之 CcrRestoreSourceService 源码解读
  5. 【java】Thread.Sleep 与 Thread.onSpinWait
  6. 【Spring】SpringMVC 初始化 流程
  7. [Flink] Not a valid protocol version This 1s not an HTTP port
  8. 【Java】字符串substring方法在jkd6,7,8中的差异
  9. Spark报错:Bad response ERROR for block BP-78092257-8.xx-121xxx
  10. 批量删除Windows7中隧道适配器的方法