Javascript语言精粹之正则表达式知识整理

1.正则表达式思维导图

2.正则表达式常用示例

2.1 移除所有标签,只留下innerText

var html = "<p><a href='http://www.baidu.com/'>Ruby Louvre</a>by <em>test</em></p>";
var text = html.replace(/<(?:.|\s)*?>/g, "");
alert(text)

2.2移除hr以外的所有标签,只留下innerText

var html = "<p><a href='http://www.baidu.com/'>Ruby Louvre</a></p><hr/><p>by <em>test</em></p>";
var text = html.replace(/<(?!hr)(?:.|\s)*?>/ig,"")
alert(text)//Ruby Louvre<hr/>by test

2.3匹配email

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*,其中\w+@\w+\.\w+是基础结构,剩余部分是在这个基础上添加

2.4 提取简单url的各项内容

https://www.fouwwwfos.gr:8080/c.html?a=1&b=2,提取protocol,hostname,port,querystring

(https?):\/\/(.*):(\d+)\/(?:.*\..*)\?(.*)

结果

["https://www.fouwwwfos.gr:8080/c.html?a=1&b=2", "https", "www.fouwwwfos.gr", "8080", "a=1&b=2"]

2.5 Javascript语言精粹中URL表达式

var parse_url=/^(?:(?:([A-Za-z]+:))(\/{0,3}))?([\w\.\-]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/;
var url="http://www.it-ora.com:80/goodparts?q#fragment";
var result=parse_url.exec(url);
//result=["http://www.ora.com:80/goodparts?q#fragment","http","//","www.it-ora.com","80","goodparts","q","fragment"];

2.6 简单的URL匹配表达式

(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})
Will match the following cases
  • http://www.foufos.gr
  • https://www.foufos.gr
  • http://foufos.gr
  • http://www.foufos.gr/kino
  • http://www.t.co
  • http://t.co
  • http://werer.gr
  • www.foufos.gr

Will NOT match the following

  • www.foufos
  • http://www.foufos
  • http://foufos

2.7 string.match和RegExp.exec区别

var someText="web2.0 .net2.0";
var pattern=/(\w+)(\d)\.(\d)/g;
var outCome_exec=pattern.exec(someText);
var outCome_matc=someText.match(pattern);
//outCome_exec:["web2.0", "web", "2", "0"]
//outCome_matc:["web2.0", "net2.0"] var someText="web2.0 .net2.0";
var pattern=/(\w+)(\d)\.(\d)/; //不带g
var outCome_exec=pattern.exec(someText);
var outCome_matc=someText.match(pattern);
//outCome_exec :["web2.0", "web", "2", "0"]
//outCome_matc: ["web2.0", "web", "2", "0"]

1)exec是RegExp对象方法,match是String对象方法;

2)如果没有找到结果,则二者都返回null;

3)只有在正则表达式必须指定全局g属性时,match才能返回所有匹配,否则match与exec方法结果无差异,是等价的;

4)exec永远返回与第一个匹配相关的信息,其返回数组第一个值是第一个匹配的字串,剩下的是所有分组的反向引用(即子括号的匹配内容);

5)exec在设置g属性后,虽然匹配结果不受g的影响,返回结果仍然是一个数组(第一个值是第一个匹配到的字符串,以后的为分组匹配内容),但是会改变index和lastIndex等的值,将该对象的匹配的开始位置设置到紧接这匹配子串的字符位置,当第二次调用exec时,将从lastIndex所指示的字符位置开始检索。同样match方法在设置了g属性后,也会改变index和lastIndex的值,但是是一次性的。无法像exec那样能逐过程累积(即将结果放入Matches 集合中去了),因此无法累积获取下一次检索的位置。

Javascript语言精粹之正则表达式知识整理的更多相关文章

  1. JavaScript语言精粹 笔记05 正则表达式

    正则表达式 正则表达式以方法的形式被用于对字符串中的信息进行查找.替换画图提取操作.可处理正则表达式的方法有:regexp.exec, regexp.test,string.match, string ...

  2. JavaScript语言精粹 笔记01 语法 对象

    内容比较简单,只是从头梳理一下JS的知识 语法空白标识符数字字符串语句 对象对象字面量检索更新引用原型反射枚举删除减少全局变量污染  语法 1 空白 空白可能表现为格式化字符或注释的形式.空白通常没有 ...

  3. Javascript 语言精粹 代码片段合集

    Javascript 语言精粹 代码片段合集 标签:Douglas-Crockford Javascript 最佳实践 原文链接 更好的阅读体验 使用一个method 方法定义新方法 Function ...

  4. 《JavaScript语言精粹》学习笔记

    一.in的用法 for...in 枚举一个对象的所有可枚举属性 检测DOM/BOM属性 if ("onclick" in elem) { // 元素支持onclick } if ( ...

  5. Javascript语言精粹之String常用方法分析

    Javascript语言精粹之String常用方法分析 1. String常用方法分析 1.1 String.prototype.slice() slice(start,end)方法复制string的 ...

  6. javascript语言精粹mindmap

    javascript语言精粹mindmap 最近刚刚读完<javascript语言精粹>,感觉其中的内容确实给用js作开发语言的童鞋们提了个醒——js里面坑很多啊 不过,我也并不完全认同书 ...

  7. 《JavaScript语言精粹》【PDF】下载

    <JavaScript语言精粹>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382204 内容简介 javascript曾是&q ...

  8. JavaScript语言精粹 笔记06 方法

    JS包含了少量可用在标准类型上的标准方法. ArrayFunctionNumberObjectRegExpString Array array.concat(item...) concat方法返回一个 ...

  9. JavaScript语言精粹 笔记02 函数

    函数函数对象函数字面量调用参数返回异常给类型增加方法递归作用域闭包回调模块级联套用记忆   函数 1 函数对象 在JS中函数就是对象.对象是“名/值”对的集合并拥有一个连接到原型对象的隐藏连接.对象字 ...

随机推荐

  1. Swift - 使用storyboard创建表格视图(TableViewController)

    项目创建完毕后,默认是使用ViewController作为主界面视图.下面通过样例演示,如何使用TableViewController作为主界面视图,同时演示如何在storyboard中设置表格及内部 ...

  2. 小米手机usb共享网络mac

    今天.我想去FQgoogle,mac在墙上,不便于使用.甚至只是用Android手机wifi,打开墙软件.然后usb分享到mac.然后mac互联网. 在谈到一些复杂.其实,关键一,小米手机usb共享, ...

  3. js弹出对话框,遮罩效果,

    刚刚来到实习单位,我跟着廖哥做项目.然后他分配给我一个小小的任务,实现起来总的效果如下: 然后,但我们单击显示数目这个链接的时候,就会弹出一个又遮罩效果的对话框,如下图: 当我们在对话框中再点击里面的 ...

  4. hdu 2147 SG函数打表(手写也可以) 找规律

    kiki's game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 40000/1000 K (Java/Others) Total ...

  5. Js正则表达式学习之test和compile的简单介绍

    RegExp 对象用于规定在文本中检索的内容. 定义 RegExp RegExp 对象用于存储检索模式. 通过 new 关键词来定义 RegExp 对象.以下代码定义了名为 patt1 的 RegEx ...

  6. How do I create a zip file?(转)

    Creating a zip file is a task that can easily be accomplished by using the classes ZipOutputStream a ...

  7. jQuery 自学笔记—8 常见操作

    jQuery 拥有可操作 HTML 元素和属性的强大方法. jQuery DOM 操作 jQuery 中非常重要的部分,就是操作 DOM 的能力. jQuery 提供一系列与 DOM 相关的方法,这使 ...

  8. 进一步解 apt-get 的几个命令

    用 apt-get 也非常久了,没多想它的实现,近期遇到 gstreamer 装不上的问题.才多看看了它 apt-get 就是从网上下载包,并安装到本地 手工下载 dpkg 包,而后 "dp ...

  9. [初探iOS开发]storyboard的使用

    storyboard的目的是为了方便的设计程序view之间的关系,使得程序员把精力都放到核心业务逻辑之上.

  10. Android实现位图剪切

    我们不能总是依赖于BitmapFactory 以下告诉大家怎么从Bitmaqp中截取某一部分创建新的Bitmap  系统会有一个默认png图片:icon.png 可是这个图片中最外层会有白色的 比較讨 ...