zoukankan      html  css  js  c++  java
  • php正则表达式简介

    正则表达式简介

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

    界定符

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

    元字符

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

    量词(匹配次数)

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

    边界控制(匹配位置)

    () 匹配括号内的原子集合作为一个原子看待
     匹配单词的开始或者结束位置
    ^ 匹配字符串的开始位置
    $ 匹配字符串的结束位置
    G 匹配上一个匹配的结尾(本次匹配的开始)
    A 匹配字符串开头(类似^,但是不受处理多行选项的影响)
     匹配字符串的结尾或者行尾(不受处理多行选项的影响)
    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]+$

  • 相关阅读:
    创新工场 笔试1
    C++的异常处理
    阿里笔试题2
    阿里笔试题1
    控制CPU占用率曲线
    再探结构体字节对齐问题
    1401
    pancake sort的几个问题
    CF198 D2
    谨慎设计一个单例类
  • 原文地址:https://www.cnblogs.com/qingsong/p/5385196.html
Copyright © 2011-2022 走看看