php正则讲解 及与 js的正则比较
正则:用于检索字符串的规则;
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的正则比较的更多相关文章
- JS利用正则配合replace替换指定字符
替换指定字符的方法有很多,在本文为大家详细介绍下,JS利用正则配合replace是如何做到的,喜欢的朋友可以参考下 定义和用法 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一 ...
- js之正则的坑
首先给一个神奇的图: 我的反应,精分吧!一会儿true一会儿false的... 后来发现,把g去掉后就正常了,那这是为什么呢??lastIndex惹得鬼! 正文: lastIndex 全局正则表达是, ...
- JavaScript 字符串匹配 | JS 的正则用法 | 从后边匹配
// 字符串匹配命令是 match,不是 replace var text = "http://123.com/456.html" ; window.alert(text.matc ...
- 正则双重过滤 /// splitKey1 第一个正则式匹配 /// splitKey2 匹配结果中再次匹配进行替
/// <summary> /// 正则双重过滤 /// splitKey1 第一个正则式匹配 /// splitKey2 匹配结果中再次匹配进行替换 /// </summary&g ...
- 小程序基础知识点讲解-WXML + WXSS + JS,生命周期
小程序基础 小程序官方地址,小程序开发者工具,点击此处下载.在微信小程序中有一个配置文件project.config.json,此文件可以让开发者在不同设备中进行开发. 微信小程序共支持5种文件,wx ...
- js常用正则
var sTest="xxxkdsj234dogdog1234xx"var reTest1=/(dog){2}/var reTest2 = /(?:dog){2}/;console ...
- 使用JS通过正则限制input的输入
第一: 限制只能是整数 type = "text" name= "number" id = 'number' onkeyup= "if(! /^d+$ ...
- jQuery的基础跟JS的正则
大家好,我是唯芸星,这是我的一点点学过的知识,呈现给大家 1:正则表达式 包括: 1:正则表达式包括两部分 ①:定义正则表达式的规则 ②:正则表达式的规模(i/g/ ...
- 前端双引号单引号,正则反向引用,js比较jq
1.js,jq,css,html属性必须双,如果同时出现需要嵌套使用,属性的规范是双但是也可以用单测试有效 单引号现象举例:jq中获取元素标签是单引号:$('input').click:弹出也是单引号 ...
随机推荐
- Verilog中的reg一定会被综合成寄存器么
对应于实际的数字电路中,如果该程序块描述的是时序逻辑,则该寄存器变量对应为寄存器:如果该程序块描述的是组合逻辑,该寄存器变量对应为硬件逻辑:如果该程序块描述的是不完全组合逻辑,那么该寄存器变量也可以对 ...
- 测序数据质控-FastQC
通常我们下机得到的数据是raw reads,但是公司通常会质控一份给我们,所以到很多人手上就是clean data了.我们再次使用fastqc来进行测序数据质量查看以及结果分析. fastqc的操作: ...
- Java程序员从阿里面试回来,这些面试题你们会吗?
前不久刚从阿里面试回来,为了这场面试可以说准备了一个半月,做的准备就是刷题和看视频看书充实自己的技术,话说是真难啊,不过还算顺利拿到了offer,有很多面试题我已经记不起来了,这些是当天回家整理好的, ...
- 华莱士的 第二个python程序之(格式化输出)
name = input("name:")age = input("age:")info ='''---------- info of %s --------- ...
- Python全栈之路----常用模块----hashlib加密模块
加密算法介绍 HASH Python全栈之路----hash函数 Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列 ...
- vue-cli搭建项目模拟后台接口数据,webpack-dev-conf.js文件配置
webpack.dev.conf.js 首先第一步 const express = require('express');const app = express();var appData = req ...
- Introduction tp Operating System
一.虚拟化 为了让用户告诉操作系统如何利用虚拟机功能,OS提供给应用程序一些接口——系统调用,也会说提供了一个标准库. CPU通过分时达到虚拟化. 内存物理模型只是一个字节数组,读写修改需要制定地址. ...
- 锋利的jQuery初学(5)
层级选择器: 层级选择器 符号 解释 使用 空格 后代选择器 $("div p").css("","") + 紧邻选择器 $("d ...
- jsp的四个作用域page、request、session、application
1.简单说 page指当前页面.在一个jsp页面里有效 2.request 指从http请求到服务器处理结束,返回响应的整个过程.在这个过程中使用forward方式跳转多个jsp.在这些页面里你都可以 ...
- PymongoDB_study
import pymongo client = pymongo.MongoClient(host='localhost',port=27017)#连接数据库 #db = client.test#指定数 ...