正则表达式简介

正则表达式Regular Expression,使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。代表性书籍《正则表达式之道》里面有详细论述,本书籍为个人查阅之用力求精简、明确、方便使用,只对必要概念做补充性说明。

界定符

正则表达式本身即是一个字符串,需要一组界定符区分出哪里是正则表达式的内容。//和##和{},都是界定符,在PHP语言中用//作为正则表达式的界定符。一般不建议用{}做界定符,因为{}本身也可以是正则表达式的元字符,容易混淆。

元字符

| 匹配两个或者多个分支选择
[] 匹配方括号中任意的原子
[^] 匹配方括号中原子之外的任意字符,相当于[]的非
. 匹配除换行符之外的任意一个字符
\d 匹配任意一个十进制的数字,即[0-9]
\D 匹配任意一个非十进制的数字,即[^0-9]
\s 匹配任意一个不可见原子(空白符),即[\f\n\r\t\v]
\S 匹配任意一个非不可见原子(空白符),即[^\f\n\t\v]
\w 匹配任意一个数字、字母或者下划线,即[0-9a-zA-Z_]
\W 匹配任意一个非数字、字母、或者下划线,即[^0-9a-zA-Z_]

量词(匹配次数)

{n} 前面原子恰好重复n次
{n,} 前面原子重复>=n次
{n,m} 前面原子重复大于等于n次,小于等于m次
*重复0次或者更多次
+重复1次或者更多次
?重复0次或者1次

边界控制(匹配位置)

() 匹配括号内的原子集合作为一个原子看待
\b 匹配单词的开始或者结束位置
^ 匹配字符串的开始位置
$ 匹配字符串的结束位置
\G 匹配上一个匹配的结尾(本次匹配的开始)
\A 匹配字符串开头(类似^,但是不受处理多行选项的影响)
\Z 匹配字符串的结尾或者行尾(不受处理多行选项的影响)
\z 匹配字符串的结尾(类似$,但是不受处理多行选项的影响)

修正模式

贪婪匹配,匹配结果存在歧义时取其长(PHP中为默认模式)
懒惰匹配,匹配结果存在歧义时取其短
U 修正为懒惰模式
i 忽略英文字母大小写
x 忽略空白符
s 让元字符 . 匹配任意字符包括换行符
e 如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串

转义

正则中的元字符都要加\进行转义:
$ ( ) * + . [ ] ? \ ^ { } |

非空

.+

大陆手机号

1[34578]\d{9}

email

^\w+(.w+)*@\w+(.w+)+$

URL

^(https?://)?(\w+.)+[a-zA-Z]+$

php正则表达式简介的更多相关文章

  1. MySql 正则表达式简介及使用

    MySql正则表达式简介及使用 by:授客 QQ:1033553122 简介 正则表达式描述了一组字符串,该字符放置于REGEXP工具后面.作用是将一个正则表达式与一个文本串进行比较. 最简单的正则表 ...

  2. 【转】正则表达式简介及在C++11中的简单使用教程

    正则表达式Regex(regular expression)是一种强大的描述字符序列的工具.在许多语言中都存在着正则表达式,C++11中也将正则表达式纳入了新标准的一部分,不仅如此,它还支持了6种不同 ...

  3. JS的正则表达式简介

    1.JS的正则表达式 1.1 简介 JS的正则表达式比较简单,总体上只分为两个功能:一个是test——用于匹配字符串是否符合规定的正则表达式规则:另外一个是exec——用于获取匹配到的数据. 1.2 ...

  4. Java连载74-字符串常用方法、正则表达式简介

    一.字符串相关的常用方法简介​ package com.bjpowernode.java_learning; ​ public class D74_1_StringCommonMethod { pub ...

  5. Python中正则表达式简介

    目录 一.什么是正则表达式 二.正则表达式的基础知识 1. 原子 1)普通字符作为原子 2)非打印字符作为原子 3) 通用字符作为原子 4) 原子表 2. 元字符 1)任意匹配元字符 2)边界限制元字 ...

  6. 【循序渐进学Python】12.Python 正则表达式简介

    正表达式就是一段匹配文本片段的模式,在Python 中 re 模块包含了对正则表达式(regular expression)的支持. 1. 正则表达式的基本概念 1. 通配符 点号( . )可以匹配换 ...

  7. javascript正则表达式简介

      javascript正则表达式 javascript正则表达式 regular expression是一个描述字符模式的对象: ECMAScript中的RegExp类表示正则表达式: String ...

  8. Ruby自学笔记(四)— 数组,Hash,正则表达式简介

    今天学习的是数组和Hash,数组在很多编程语言中都能常常用到. 数组: 数组是存储数据的一种容器,在Ruby中,数组中存储的数据可以是任何类型的数据:这和JAVA不同,在JAVA中,数组是存储同一类型 ...

  9. Python re 正则表达式简介

    1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十 ...

随机推荐

  1. 解决MyEclipse吃内存以及卡死的方法 (转)

    前言:MyEclipse5.5 大小 139M:MyEclipse6.5 大小 451M:MyEclipse7.0 大小 649M!下载服务器又是国外的...下载速度累人也就罢了,只要你工作性能一流. ...

  2. struts2整合spring应用实例

    我们知道struts1与spring整合是靠org.springframework.web.struts.DelegatingActionProxy来实现的,以下通过具体一个用户登录实现来说明stru ...

  3. 关于Ubuntu下apt的一些用法及和yum的比较

    Fedora和Red Hat有yum安装软件,Ubuntu有apt工具. apt简单的来说,就是给Ubuntu安装软件的一种命令方式. 一.apt的相关文件 /etc/apt/sources.list ...

  4. Permission denied: user=xxj, access=WRITE, inode="user":hadoop:supergroup:rwxr-xr-x

    在windows中运行eclipse时报错Permission denied: user=xxj, access=WRITE, inode="user":hadoop:superg ...

  5. Maven项目中提示:Eclipse “cannot be resolved to a type” error

    我的解决办法是这个: 临时解决方法是:Clean项目 ********百度到的其他解决办法,统一归纳此处****************** (1)jdk不匹配(或不存在) 项目指定的jdk为“jdk ...

  6. 安卓图表引擎AChartEngine(二) - 示例源码概述和分析

    首先看一下示例中类之间的关系: 1. ChartDemo这个类是整个应用程序的入口,运行之后的效果显示一个list. 2. IDemoChart接口,这个接口定义了三个方法, getName()返回值 ...

  7. Highcharts一些属性

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  8. USACO Section 1.1 Your Ride Is Here 解题报告

    题目 问题描述 将字符串转变为数字,字母A对应的值为1,依次对应,字母Z对应的值为26.现在有一个字符串,将其中的每个字符转变为数字之后进行累乘,最终的结果对47求余数. 题目给你两个字符串,其中的字 ...

  9. Linux的iptables常用配置范例(3)

    编辑/etc/rc.local,加入iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE,外网口eth1为dhc ...

  10. Blog`s CSS

    #div_digg { position: fixed; bottom: 10px; width: 50px; right: 50px; filter: alpha(opacity=20); opac ...