【基础回顾】

a、字符类
    [..........] 方括号内的任意字符
    [^......] 不在方括号内的任意字符
    . 除换行符和其他unicode终止符之外的任意字符
    \w 任何ASCII字符组成的单词 即[a-zA-Z0-9]
    \W 任何不是ASCII字符组成的单词 即[^a-zA-Z0-9]
    \s 任何unicode空白符 如:0x0020
    \S 任非何unicode空白符的字符
    \d [0-9]
    \D [^0-9]
b、重复
    {n,m}   n<=重复<=m
    {n,}   n<=重复
    {n}   n次
    ? 可选 0次或者1次 等价于 {0,1} ("do(es)?" 可以匹配 "do" 或 "does" 中的"do")
    + 1次或者多次 等价于 {1,} ('zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z")
    * 0次或者多次 等价于{0,}  (zo* 能匹配 "z" 以及 "zoo")
c、修饰符
    i 不区分大小;
    g 执行一个全局匹配
    m 多行匹配模式

【相关方法】

js
    1.search()  string.search(reg) 返回匹配位置,否则-1
    2.match() string.match(reg) 返回的是一个由匹配结果组成的数组
    3.replace() string.replace(reg,str) 返回的是被替换的字符串
    4.split() string,split(reg) 返回的是被分割后的数组
PHP
    1.preg_match($reg,$string,$matchs);
    2.preg_match_all($reg,$matchs);
    3.preg_replace($reg,$matchs);
    4.preg_split ($reg,$string);

【进阶相关】

一、非贪婪的重复(尽可能少地匹配):在待匹配的字符串后面添加一个?即可

var text = 'aaa';text.match (/a+/);  => ["aaa"]
 var text = 'aaa';text.match (/a+?/);    => ["a"]
 var text = 'aaab';text.match (/a+?b/);  => ["aaab"]//寻找字符串中第一个可能存在的位置
【思考1】
1.利用正则匹配tiffany或者milly
2.利用正则匹配http或者https 
3.利用正则匹配java或者javascript
4.利用正则匹配 tiffany或者milly like java或者javascript

二、选择| 分组() 引用

1.选择:类似于或,匹配左右任一项即可
    var text ='milly';text.match (/tiffany|milly/);=> ["milly"]
    var text ='sela';text.match (/tiffany|milly/);=>null
    【tips】: 选择时,选择默认从左边匹配,即使右边有更好的匹配项
    var text = 'ab';text.match(/a|ab/ );=> ["a"]
2.分组:把单独的项组成一个子表达式;
    var text ='javascript';text.match (/java(script)?/)=> ["javascript","script"]
    【tips】
    1.在完整的模式中定义子模式,可以从目标串中抽出和圆括号中的子模式匹配的部分;
    2.允许在同一表达式的后部**引用**前面的表达式,\数字来实现(因为可以嵌套,数字是左括号的位置,对正则表达式的引用,并不是指对子表达式模式的引用,而是指与那个模式相匹配的文本的引用 )
    3.正则表达式会记住每个自表达式匹配的文本
    4.用(?)进行分组,不生成引用
    var quato =/[a|b][^'"]*[a|b]/,text='agggb' ; text.match (quato);=> ["agggb"]
    var quato =/([a|b])[^'"]*\1/,text='agggb'; text.match (quato);=>null
    var quato =/"([^"*])"/,text='dddde'; text.replace(quato,' "$1" ');=> "dddde"
    var quato =/(\?|&)id\=\d+(.*)/,text='w.midea.com?id=7076&mtag=1'; text.replace(quato,'$1id=7078$2');=> "w.midea.com?id=7078&mtag=1"

三、指定匹配位置

像^这样的元素不匹配某个特定的字符,他们指定匹配发生的位置,有时候称之为锚
1.^ 字符串开头  $ 字符串结尾
     var text =' This ';text.match(/hi/ ); => ["hi"]
     var text =' This ';text.match(/^hi/ ); =>null
2.\b 单词的边界 退格直接量 即单词的边界  
     var text =' This is Regex ';text.match(/\bis\b/ );=> ["is"]
     var text =' This is Regex ';text.match(/\bi\b/ );=>null
3.\B 非单词的边界
     var text =' This is Regex ';text.match(/\Bis\B/ );=>null
     var text =' This is Regex ';text.match(/Re\B/ );=> ["Re"]
4.(?= )加入一个表达式 即先行断言,说明圆括号内的表达式必须正确匹配,但不包括
    var text = 'javaScript';text.match(/java(Script)*(?=\:)/ ); =>null
    var text = 'javaScript:';text.match(/java(Script)*(?=\:)/ );=> ["javaScript","Script"] 
    var text = 'java:';text.match(/java(Script)*(?=\:)/ );=> ["java",undefined](?!)不匹配
    var text = 'javaScript';text.match(/java(Script)*(?!\:)/ );=> ["javaScript","Script"]
    var text = 'javaScript:';text.match(/java(Script)*(?!\:)/ );=> ["java",undefined]
    var text = 'java:';text.match(/java(Script)*(?!\:)/ );=>null

【思考1参考】

1. /tiffany|milly/
var text ='milly';text.match (/tiffany|milly/);
var text ='sela';text.match (/tiffany|milly/);
2. (/http[s]?/
var text ='http';text.match (/http[s]?/);
3. /java(script)?/
var text ='javascript';text.match (/java[script]?/);
var text ='javascript';text.match (/java(script)?/);
4. (/(tiffany|milly)likejava(script)?/
var text ='tiffanylikejava';text.match (/(tiffany|milly)likejava(script)?/);

学习笔记-正则的更多相关文章

  1. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  2. HTML5数字输入仅接受整数的实现代码

    这篇文章主要介绍了HTML5数字输入仅接受整数的实现代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. amaze ui 的使用详细教程

    这篇文章主要介绍了amaze ui 的使用详细教程,本文通过多种方法给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  4. 解析html5 canvas实现背景鼠标连线动态效果代码

    流行的动态背景连线特效。今天小编通过实例代码给大家解析html5 canvas实现背景鼠标连线动态效果,感兴趣的朋友一起看看吧

  5. html5简介_动力节点Java学院整理

    这篇文章主要介绍了html5简介,用于指定构建网页的元素,这些元素中的大多数都用于描述网页内容,有兴趣的可以了解一下

  6. ios 8 Homescreen webapp,关闭和打开iPad停止javascript

    我有一个适用于iPad的全屏HTML5网络应用程序,并且刚刚安装了IOS8来试用它,它一切正常,直到你关闭并重新启动iPad.一旦web应用程序重新启动javascript就会停止并加载新页面不会重新启动它.在iPad上的Safari中打开同一页面时,关闭和打开iPad会继续按预期工作.其他人注意到了这个或想出了一个解决方案吗?解决方法这似乎是我在iOS8.1.1更新中解决的.

  7. iOS 6 javascript与object.defineProperty的间歇性问题

    当访问使用较新的Object.defineProperty语法定义属性的对象的属性时,有没有其他人注意到新iOS6javascript引擎中的间歇性错误/问题?https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineProperty我正在看到javascript失败的情况,说

  8. ios – 如何使用JSExport导出内部类的方法

    解决方法似乎没有办法将内部类函数导出到javascript.我将内部类移出并创建了独立的类,它起作用了.

  9. 静音iOS推送通知与React Native应用程序在后台

    我有一个ReactNative应用程序,我试图获得一个发送到JavaScript处理程序的静默iOS推送通知.我看到的行为是AppDelegate中的didReceiveRemoteNotification函数被调用,但是我的JavaScript中的处理程序不会被调用,除非应用程序在前台,或者最近才被关闭.我很困惑的事情显然是应用程序正在被唤醒,并且它的didReceiveRemoteNotifi

  10. ios – 内存泄漏与UIWebView和Javascript

    清楚地包含一个Javascript文件到我的HTML是使UIWebView泄漏内存.当我重复使用相同的UIWebView对象时,或者每当我有内容实例化一个新的漏洞时,会出现泄漏的事实,导致我认为必须有一些JavaScript文件被loadHTMLString处理,导致泄漏.有人知道如何解决这个问题吗?

随机推荐

  1. 法国电话号码的正则表达式

    我正在尝试实施一个正则表达式,允许我检查一个号码是否是一个有效的法国电话号码.一定是这样的:要么:这是我实施的但是错了……

  2. 正则表达式 – perl分裂奇怪的行为

    PSperl是5.18.0问题是量词*允许零空间,你必须使用,这意味着1或更多.请注意,F和O之间的空间正好为零.

  3. 正则表达式 – 正则表达式大于和小于

    我想匹配以下任何一个字符:或=或=.这个似乎不起作用:[/]试试这个:它匹配可选地后跟=,或者只是=自身.

  4. 如何使用正则表达式用空格替换字符之间的短划线

    我想用正则表达式替换出现在带空格的字母之间的短划线.例如,用abcd替换ab-cd以下匹配字符–字符序列,但也替换字符[即ab-cd导致d,而不是abcd,因为我希望]我如何适应以上只能取代–部分?

  5. 正则表达式 – /bb | [^ b] {2} /它是如何工作的?

    有人可以解释一下吗?我在t-shirt上看到了这个:它似乎在说:“成为或不成为”怎么样?我好像没找到’e’?

  6. 正则表达式 – 在Scala中验证电子邮件一行

    在我的代码中添加简单的电子邮件验证,我创建了以下函数:这将传递像bob@testmymail.com这样的电子邮件和bobtestmymail.com之类的失败邮件,但是带有空格字符的邮件会漏掉,就像bob@testmymail也会返回true.我可能在这里很傻……当我测试你的正则表达式并且它正在捕捉简单的电子邮件时,我检查了你的代码并看到你正在使用findFirstIn.我相信这是你的问题.findFirstIn将跳转所有空格,直到它匹配字符串中任何位置的某个序列.我相信在你的情况下,最好使用unapp

  7. 正则表达式对小字符串的暴力

    在测试小字符串时,使用正则表达式会带来性能上的好处,还是会强制它们更快?不会通过检查给定字符串的字符是否在指定范围内比使用正则表达式更快来强制它们吗?

  8. 正则表达式 – 为什么`stoutest`不是有效的正则表达式?

    isthedelimiter,thenthematch-only-onceruleof?PATTERN?

  9. 正则表达式 – 替换..与.在R

    我怎样才能替换..我尝试过类似的东西:但它并不像我希望的那样有效.尝试添加fixed=T.

  10. 正则表达式 – 如何在字符串中的特定位置添加字符?

    我正在使用记事本,并希望使用正则表达式替换在字符串中的特定位置插入一个字符.例如,在每行的第6位插入一个逗号是什么意思?如果要在第六个字符后添加字符,请使用搜索和更换从技术上讲,这将用MatchGroup1替换每行的前6个字符,后跟逗号.

返回
顶部