PHP 正则表达式操作

函数

属性/方法 意义
int preg_match(...) 查找匹配,标准正则表达式
int preg_match_all(...) 查找所有匹配
bool ereg(...) 返回是否找到匹配,简单正则表达式
bool eregi(...) 返回是否找到匹配,忽略大小写
string ereg_replace(...) 返回替换后的字符串
string eregi_replace(...) 返回替换后的字符串,忽略大小写

preg_match 函数

int preg_match(pattern, subject [, array matches [, int flags=0]] )
参数 意义
pattern 正则表达式,字符串型
subject 被查找的字符串
matches 返回匹配内容数组

flags 默认时,为一维数组:

下标 0 1.. matches->length
内容 整个匹配 各子匹配

flags=PREG_OFFSET_CAPTURE 时,为二维数组:

matches 二维
0 1
一维 0 整个匹配字符串 匹配位于 subject 的下标
1..matches->length 各子匹配字符串 子匹配位于 subject 的下标
flags PREG_OFFSET_CAPTURE = 256

preg_match_all 函数

int preg_match_all(pattern, subject , array matches [, int flags=1] )
参数 意义
pattern 正则表达式,字符串型
subject 被查找的字符串
matches 返回匹配内容数组

flags = PREG_PATTERN_ORDER 时,为二维数组:

matches 二维
0 1..n
一维 0 第 1 个匹配 第 2..n+1 个匹配
1 第 1 个匹配的子匹配 1 第 2..n+1 个匹配的子匹配 1
2..m 第 1 个匹配的子匹配 2..m 第 2..n+1 个匹配的子匹配 2..m

flags = PREG_SET_ORDER 时,为二维数组:

matches 二维
0 1 2..m
一维 0 第 1 个匹配 第 1 个匹配的子匹配 1 第 1 个匹配的子匹配 2..m
1..n 第 2..n+1 个匹配 第 2..n+1 个匹配的子匹配 1 第 2..n+1 个匹配的子匹配 2..m

flags = PREG_OFFSET_CAPTURE时,为三维数组:

matches 三维
0 1
前两维同上 匹配字符串 匹配位于 subject 的下标
flags PREG_PATTERN_ORDER = 1,默认

PREG_SET_ORDER = 2

PREG_OFFSET_CAPTURE = 256

ereg 函数

bool ereg(pattern,string[,regs])
参数 意义
pattern 正则表达式,字符串型,格式:"/[a-z]/"
string 被查找的字符串
regs 存储查询结果,[0] 为整个匹配,[1..n] 为各子匹配

ereg_replace 函数

string ereg_replace (pattern, replacement, string)
参数 意义
pattern 正则表达式,字符串型
replacement 替换为字符串
string 被查找的字符串

示例

检测是否为电子邮件地址:

function isemail($addr)
{
    return(preg_match("/[-_\w\.]+@[-_\w\.]+/",$addr));
}

JScript 正则表达式操作

VBScript 正则表达式操作