博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Javascript语言精粹之正则表达式知识整理
阅读量:6707 次
发布时间:2019-06-25

本文共 2322 字,大约阅读时间需要 7 分钟。

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

1.正则表达式思维导图

 

2.正则表达式常用示例

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

var html = "

Ruby Louvreby test

";var text = html.replace(/<(?:.|\s)*?>/g, "");alert(text)

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

var html = "

Ruby Louvre


by test

";var text = html.replace(/<(?!hr)(?:.|\s)*?>/ig,"")alert(text)//Ruby Louvre

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)/; //不带gvar 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 集合中去了),因此无法累积获取下一次检索的位置。

转载于:https://www.cnblogs.com/GongQi/p/4484658.html

你可能感兴趣的文章
svn 删除svn项目命令
查看>>
linux知识点集锦
查看>>
任务与函数
查看>>
SCRUM MASTER检查单
查看>>
13.Zookeeper的java客户端API使用方法
查看>>
《大话设计模式》读书笔记-第9章 原型模式
查看>>
排序五:快速排序
查看>>
POJ - 3264——Balanced Lineup(入门线段树)
查看>>
Python中的多进程与多线程/分布式该如何使用
查看>>
C语言基础教程源码
查看>>
微信公众号
查看>>
LeetCode - 1. Two Sum
查看>>
[LeetCode]: 64: Minimum Path Sum
查看>>
vuex简介(转载)
查看>>
OA系统审批邮件业务规则整理
查看>>
erlang.mk和makefile语法剖析
查看>>
WEB新手之布尔盲注
查看>>
MySQL快捷键
查看>>
PHP使用 DOMDocument创建和解析xml文件
查看>>
全面掌握const、volatile和mutable关键字(转)
查看>>