php 正则 常用基础
正则表达式
用来描述一串字符串的字符串
定界符
除了字母数字反斜线之外的所有字符都可以
/ / (强制使用)
| |
!!
原子
在自然界中的最小单位 叫做原子
正则中的原子:可以打印的字母,数字,符号,不可打印的字符 \n \r \t
Windows中有\n和\t unix中只有\n
\t 横向跳到下一制表位置
有特殊作用的符号作为原子使用需要加转义符 + * . ? [] () {} /
直接使用一些代表范围的原子 (重要)
\d 数字
\D 非数字
\w 任意一个字符 字母(大写 小写) 数字 下划线
\W 非字符
\s 空白 空格 换行 TAB ....
\S 非空白
自定义原子列表
[09] 0或9 注意:中间没有逗号
09 是两个原子 [09] 是一个原子
[0-9] 表示 范围----所有数字 [a-zA-Z]
[3|t] 表示 匹配3或t
\d [0-9]
\D [^0-9]
\w [a-zA-Z0-9_]
\s [\n\t\r\f\v]
[^0-9] 表示 非数字
注意:^在括号中,并且紧挨左边的中括号,才表示取反。
.(点)
默认情况下,代表除换行符之外的任意字符 [^\n]
原字符
修饰原子的,不能单独使用
{n,m} 从n到m个 最少有n个 最多有m个
注意:m和n中间有逗号!
{n,} 至少有n个
{0,m} 至多有m个
* 表示前面的原子可以出现 0次 1次 或 多次
+ 表示前面的原子可以出现 1次 或 多次
? 表示前面的原子可以出现 0次 或 1次
* {0,}
+ {1,}
? {0,1}
| 表示或 优先级很低
\b 表示边界
\B 表非边界
//“有没有” 的重点
^ 写在第一个原子的前面 代表以第一个原子开始
$ 写在后一个定界符的左边 表示以XX结束
圆括号的使用
1.改变优先级
2.作为一个大原子使用
3.作为子模式使用 //“是不是” 的重点
(?:.*)括号中的?: 取消子模式
反向引用
/(\d{4})([#-])\d{2}\\2\d{2} \d{2}:\d{2}:\d{2}/
贪婪匹配
禁止贪婪匹配:.*?.+?
优先级
\ 转义符优先级最高
() (?:) []
* + ? {}
^ $
| 或的优先级 最低(用或的选项应该用()括起来不能用[])
模式修正符
i 不区分大小写
s 将字符串视为单行 .可以匹配所有字符
U 禁止贪婪匹配 U和?会抵消 (不要同时使用)
个人认为:
有^和$的是匹配一个字符串从头到尾的匹配,如:注册验证。叫“是不是”。验证是不是我们要的格式。
而没有^和$时,为“有没有”,顾名思义,就是字符串里有没有要搜的正则
\r \n 在windos系统中用于匹配字符窜中是否由回车换行出现
\n 在Linux系统中用于匹配字符窜中是否由回车换行出现
Preg_replace() 的应用,返回的是字符串,不是数组 (注意:$3,${1}1)
<?php
$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '${3}-$1-${2}';
echo preg_replace($pattern, $replacement, $string);
?>
结果:
2003-April-15
Preg_match()
Preg_match_all()
Ip ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$
php 正则 常用基础的更多相关文章
- Nginx 常用基础模块
目录 Nginx 常用基础模块 Nginx日志管理 nginx日志切割 Nginx目录索引 Nginx状态监控 Nginx访问控制 Nginx访问限制 Nginx 请求限制配置实战 Nginx Loc ...
- C#-正则,常用几种数据解析-端午快乐
在等待几个小时就是端午节了,这里预祝各位节日快乐. 这里分享的是几个在C#中常用的正则解析数据写法,其实就是Regex类,至于正则的匹配格式,请仔细阅读正则的api文档,此处不具体说明,谢谢. 开始吧 ...
- HTML常用基础标签
HTML常用基础标签 带有语义的标签 <em> </em> 强调 <strong> </strong> 比em强调级别高 <abbr> &l ...
- Linux常用基础命令整理:关机命令、查看目录下文件命令等
Linux常用基础命令整理:关机命令.查看目录下文件命令等 整理了一些Linux常用基础命令,欢迎指正. 首先记住四个热键,学会这四个键,收益一辈子. Tab按键---命令补齐功能Ctrl+c按键-- ...
- Python3.x:常用基础语法
Python3.x:常用基础语法 1,if else语句: 不执行if内的语句,需要用:pass if i>2: #跳过不执行 pass else: print("i= %s" ...
- Linux基础(03)、常用基础指令和操作
目录 一.什么是Linux 二.常用基础指令 2.1.vi编辑 2.2.Linux文件类型 2.3.常用指令:增.删.改.查.其他 三.Linux的目录和权限 3.1.目录 3.2.权限 3.3.修改 ...
- es6常用基础合集
es6常用基础合集 在实际开发中,ES6已经非常普及了.掌握ES6的知识变成了一种必须.尽管我们在使用时仍然需要经过babel编译. ES6彻底改变了前端的编码风格,可以说对于前端的影响非常巨大.值得 ...
- CentOS常用基础命令大全
这篇文章主要介绍了CentOS常用基础命令大全,学习centos的朋友需要掌握的知识,需要的朋友可以参考下 1.关机 (系统的关机.重启以及登出 ) 的命令shutdown -h now 关闭系统(1 ...
- java常用基础(一)
Java常用基础(一) 原文写于2017-12-02 输入输出 //输入 Scanner in = new Scanner(new BufferedInputStream(System.in)); i ...
随机推荐
- 面试题目——《CC150》中等难题
面试题17.1:编写一个函数,不用临时变量,直接交换两个数. 思路:使用差值或者异或 package cc150.middle; public class Exchange { public stat ...
- linux中ldconfig的使用介绍
linux中ldconfig的使用介绍 ldconfig是一个动态链接库管理命令,其目的为了让动态链接库为系统所共享. ldconfig的主要用途: 默认搜寻/lilb和/usr/lib,以及配置文件 ...
- C++内存动态分配
https://www.percona.com/blog/2012/07/05/impact-of-memory-allocators-on-mysql-performance/ https://su ...
- [NHibernate]Parent/Child
系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 [NHibernate]持久化类(Persistent Classes) [NHibernate ...
- CSS 和 JS 动画哪个更快
基于Javascript的动画暗中同CSS过渡效果一样,甚至更加快,这怎么可能呢?而Adobe和Google持续发布的富媒体移动网站的性能可媲美本地应用,这又怎么可能呢? 本文逐一遍览了基于Javas ...
- win7提示“User Profile Service服务未能登录”
注:本文由Colin撰写,版权所有!转载请注明原文地址,谢谢合作! 最近,有个同事打电话告诉我说他的用户名无法登陆到系统,提示“User Profile Service服务未能登录,无法加载用户配置文 ...
- Idea 开发 web项目
1.经历 很久没有搞 web 项目了,最近一段时间搞过很多次了,但是总是在 mac 上部署失败. 2.方法: 用idea 新建一个模板的 Spring MVC 项目,部署就可以了. 3.参考: htt ...
- CentOS 6.3 中安装VirtualBOX增强工具失败:Building the main Guest Additions module[FAILED]
在VirtualBox里安装CentOS系统,会遇到“增强工具”无法正常安装,主要的原因是出在Kernel 库找不到. 错误提示如下: 通过查看日志文件: cat /var/log/vboxadd- ...
- .htaccess 基础教程(四)Apache RewriteCond 规则参数
Apache模块 mod_rewrite 提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求.它支持每个完整规则可以拥有不限数量的子规则以及附加条件规则的灵活而且强大的URL操作机制.此UR ...
- Node.js入门学习笔记(二)
函数传递 举例来说,你可以这样做: function say(word) { console.log(word); } function execute(someFunction, va ...