正则:用于检索字符串的规则;

  js正则:

  var reg=/规则/

  reg是一个对象,在浏览器下;

  所以研究他的属性和方法

  属性:

  global是修饰符,代表全局检索   g

  ignorecase  忽略大小写的检索  i

  multiline  代表多行匹配  m

  lastindex  代表检索的起始位置  注意:这个需要结合全局匹配 g

  source  资源  代表正则表达式中字段的内容;

  方法:

  匹配的方法  test()

  捕获的方法  exec()

  每次捕获,就只捕获第一个,就不捕获了,这就是正则的懒惰行;

  如何解决正则的懒惰性?

    让其进行全局捕获;

  正则的规则写法;

    [abs]  代表方括号中任意一个字符;

    (red|blue|green)  对一个整体分组

    [^abs]  代表除了方括号中任意一个字符

    [0-9]  0-9之间的任意一个数字;

  元字符:

    .  代表任意一个字符;

    \.  就是普通的.

    \w  单词字符

    \d  数字字符

    \s  空白字符

    \b  单词边界

  量词:

    n+  至少一个;

    n*  0到多个;

    n?  0到1个;

    n(x)  包含x个;

    n(x,)  至少x个;

    n(x,y)  大于等于x个,小于等于y个;

    n$  包含以n的结尾

    ^n  包含以n的开头;

    a(?=n)  指定字符串a后面紧跟着n的字符串,返回a

  针对量词:正则的贪婪性;

    正则的贪婪性:每次捕获,尽可能多的捕获;

    解决正则的贪婪性:在量词的后面加?

  正则中?的作用:

    1.放在普通的元字符后面,代表0到1个;

    2.放在量词的后面,代表取消正则的贪婪性;

  正则中()的作用;

    1.改变优先级;

    2.分组捕获

    3.分组引用;

  案例:

    var reg=/(a)(b)/

    分组捕获:首先正则是一个整体,捕获ab,捕获到在将ab分成两个小的分组,捕获不到就是 (注意字符串中没有ab的大正则即为捕获不到)    null

  如何取消分组捕获;

    在分组中的前面加上?: 就可以了

  php正则:

  1.php中的正则的定界符 //  代表起始和结束;

  2.//里面的内容就是规则;

    定界符的种类有很多,可以使用 ##  !!  ||  {}  //

  php提供的方法

    preg_match_all(参数一,参数二,参数三)  执行一个全局正则表达式的匹配

    参数一:检索的模式,我们写的正则;

    参数二:被检索的字符中;

    参数三:是一个多维数组,就是匹配的结果

  案例:

    $rg="/a/";

    $st="ab";

    var_dump(preg_match_all($rg,$st,$arr))  //返回匹配到的个数

    var_dump($arr);

  preg_match_all()  返回值int  是匹配的个数,

  $arr  是二维数组  存匹配的结果;

  正则中也分普通字符,和元字符;

    普通字符:a  s  12  _

    元字符:在正则中代表特殊意义的字符;

    \d  数字

    [0-9]  0-9中任意一个数字;

    .  任意一个字符;

    \.  就是代表.

    \w  单词字符

    \d  代表数字

    \s  空白字符

    \b  单词边界

  量词:

    *  0到多个

    +  至少一个;

    ?  0或1个;

    {n}  刚好n个;  与js量词的写法有区别

    {n,}  至少n个

    {n,m}  n到m个;

    ^n  以n的开头

    n$  以n的结尾

    |  代表或的意思 as|ad  as或ad

    [asc]  方括号中任意一个

    [^asc]  除了方括号中的任意一个;

    ()  一个整体,改变优先级,分组引用;

    模式修饰符:

      i:忽略大小写  m:多行匹配

      s:对特殊字符也能匹配;

      正则中的有些符号,是匹配不了的,如果加 s 这个修饰符,这些符号也可以匹配;

      案例:

        $re="/a.b/s";

        $st="a\nb";

    换行符  window下  \n

         linux下  \r\n

  php正则的贪婪性:

    $rg="/.*/";

    php中正则的贪婪性, 只有.*体现他的贪婪性  解除贪婪性  后面加?

  php中的小括号:

    1.成为一个整体

    2.分组引用;

  php中的分组引用  \\1  \\2  与js的区别 \1  \2;

  php正则提供的方法:

  preg_match_all()  执行一个全局正则,表达式匹配;

  preg_match()  执行一个正则,表达式匹配; 返回值int类型 0和1 匹配上了,就不往下匹配了;

  参数和preg_match_all()中的一致

  preg_replace()  执行一个正则表达式,搜索和替换;

  参数一:正则表达式;

  参数二:用于替换的字符串;

  参数三:用于检索目标字符串;  

  返回的结果:替换后的字符串;  

php正则讲解 及与 js的正则比较的更多相关文章

  1. JS利用正则配合replace替换指定字符

    替换指定字符的方法有很多,在本文为大家详细介绍下,JS利用正则配合replace是如何做到的,喜欢的朋友可以参考下 定义和用法 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一 ...

  2. js之正则的坑

    首先给一个神奇的图: 我的反应,精分吧!一会儿true一会儿false的... 后来发现,把g去掉后就正常了,那这是为什么呢??lastIndex惹得鬼! 正文: lastIndex 全局正则表达是, ...

  3. JavaScript 字符串匹配 | JS 的正则用法 | 从后边匹配

    // 字符串匹配命令是 match,不是 replace var text = "http://123.com/456.html" ; window.alert(text.matc ...

  4. 正则双重过滤 /// splitKey1 第一个正则式匹配 /// splitKey2 匹配结果中再次匹配进行替

    /// <summary> /// 正则双重过滤 /// splitKey1 第一个正则式匹配 /// splitKey2 匹配结果中再次匹配进行替换 /// </summary&g ...

  5. 小程序基础知识点讲解-WXML + WXSS + JS,生命周期

    小程序基础 小程序官方地址,小程序开发者工具,点击此处下载.在微信小程序中有一个配置文件project.config.json,此文件可以让开发者在不同设备中进行开发. 微信小程序共支持5种文件,wx ...

  6. js常用正则

    var sTest="xxxkdsj234dogdog1234xx"var reTest1=/(dog){2}/var reTest2 = /(?:dog){2}/;console ...

  7. 使用JS通过正则限制input的输入

    第一: 限制只能是整数 type = "text" name= "number" id = 'number' onkeyup= "if(! /^d+$ ...

  8. jQuery的基础跟JS的正则

    大家好,我是唯芸星,这是我的一点点学过的知识,呈现给大家                   1:正则表达式 包括: 1:正则表达式包括两部分 ①:定义正则表达式的规则 ②:正则表达式的规模(i/g/ ...

  9. 前端双引号单引号,正则反向引用,js比较jq

    1.js,jq,css,html属性必须双,如果同时出现需要嵌套使用,属性的规范是双但是也可以用单测试有效 单引号现象举例:jq中获取元素标签是单引号:$('input').click:弹出也是单引号 ...

随机推荐

  1. [C# 基础知识系列]专题五:当点击按钮时触发Click事件背后发生的事情 (转载)

    当我们在点击窗口中的Button控件VS会帮我们自动生成一些代码,我们只需要在Click方法中写一些自己的代码就可以实现触发Click事件后我们Click方法中代码就会执行,然而我一直有一个疑问的—— ...

  2. Smokeping配置完成之后出现Software error解决办法

    下面是在浏览器中输入http://localhost/smokeping点击回车之后出现的错误: Software error: ERROR: creating /usr/local/smokepin ...

  3. React中使用echarts

    1.安装相关的依赖: cnpm i react-for-echarts -S cnpm i echarts -S 2.使用方法: 页面引入: import ReactEcharts from 'ech ...

  4. 【oracle】ORA-02289: sequence does not exist

    select * from user_sequences where sequence_name = 'NLDP_LGIR_BASE_SEQUENCE'; 通过该指令查看SEQUENCE是否存在

  5. STL——string

    C++之string类型详解 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够.字符串长度等等,而且作为一个泛型类出现,他集成的操作函 ...

  6. SQLI DUMB SERIES-20

    (1)登录成功后页面: (2)登录成功后,用burp开始抓包,刷新浏览器页面,将会跳出如下页面 (3)根据各种提示,知道需要从cookies入手,寻找闭合方式 闭合方式为单引号.注释符也可以用 (4) ...

  7. appscan使用教程(全)

    链接图文来源:https://www.cnblogs.com/ZoeLiang/p/10198361.html 一.下载与破解 1.下载Appscan:http://download2.boulder ...

  8. 2082 : Only choose one

    题目描述 A想玩个游戏,游戏规则是,有n个人,编号从1-n,一字排开,站在奇数位置的人淘汰,剩下的人再一字排开,站在奇数位置的人淘汰,以此重复几次,最后只剩最后一个人,问最后一个人的编号是多少? 输入 ...

  9. 原来你是这样的setTimeout

    先上代码 console.log("start"); setTimeout(function(){ console.log("Hello"); },200); ...

  10. 关于修改banner信息;nginx反向代理apache应用

    本周实验 1. Linux下Apache部署一个php页面,返回http数据包中查看server信息,修改Apache 配置使server banner自定义. 2. nginx设置反向代理,代理上面 ...