百科狗-知识改变命运!
--

preg_match() - php 正则表达式(PCRE)

是丫丫呀12个月前 (11-21)阅读数 13#技术干货
文章标签字符串

preg_match()

(PHP 4, PHP 5, PHP 7)

执行匹配正则表达式

说明

preg_match(string $pattern,string $subject[,array &$matches[,int $flags= 0[,int $offset= 0]]]): int

搜索$subject与$pattern给定的正则表达式的一个匹配.

参数

$pattern

要搜索的模式,字符串类型。

$subject

输入字符串。

$matches

如果提供了参数$matches,它将被填充为搜索结果。$matches[0]将包含完整模式匹配到的文本,$matches[1]将包含第一个捕获子组匹配到的文本,以此类推。

$flags

$flags可以被设置为以下标记值:PREG_OFFSET_CAPTURE

如果传递了这个标记,对于每一个出现的匹配返回时会附加字符串偏移量(相对于目标字符串的)。注意:这会改变填充到$matches参数的数组,使其每个元素成为一个由第0个元素是匹配到的字符串,第1个元素是该匹配字符串在目标字符串$subject中的偏移量。

以上例程会输出:

Array
(
    [0] => Array
        (
            [0] => foobarbaz
            [1] => 0
        )
    [1] => Array
        (
            [0] => foo
            [1] => 0
        )
    [2] => Array
        (
            [0] => bar
            [1] => 3
        )
    [3] => Array
        (
            [0] => baz
            [1] => 6
        )
)
$offset

通常,搜索从目标字符串的开始位置开始。可选参数$offset用于指定从目标字符串的某个位置开始搜索(单位是字节)。

Note:

使用$offset参数不同于向preg_match()传递按照位置通过substr($subject,$offset)截取目标字符串结果,因为$pattern可以包含断言比如^$或者(?

以上例程会输出:

Array ( )

当这个示例使用截取后传递时

将会产生匹配

Array ( [0] => Array ( [0] => def [1] => 0 ) )

返回值

preg_match()返回$pattern的匹配次数。它的值将是0次(不匹配)或1次,因为preg_match()在第一次匹配后将会停止搜索。preg_match_all()不同于此,它会一直搜索$subject直到到达结尾。如果发生错误preg_match()返回FALSE

更新日志

版本说明
5.3.6如果$offset比$subject的长度还要大则返回FALSE
5.2.2命名子组可以接受(?)(?'name')以及(?P)语法。之前版本仅接受(?P)语法。

范例

preg_match() - php 正则表达式(PCRE)

查找文本字符串"php"

查找单词"word"

获取URL中的域名

以上例程会输出:

domain name is: php.net

使用命名子组

以上例程会输出:

Array
(
    [0] => foobar: 2008
    [name] => foobar
    [1] => foobar
    [digit] => 2008
    [2] => 2008
)

注释

Tip

如果你仅仅想要检查某个字符串是否包含另外一个字符串,不要使用preg_match()。使用strpos()会更快。

参见

  • PCRE 模式
  • preg_quote()转义正则表达式字符
  • preg_match_all()执行一个全局正则表达式匹配
  • preg_replace()执行一个正则表达式的搜索和替换
  • preg_split()通过一个正则表达式分隔字符串
  • preg_last_error()返回最后一个PCRE正则执行产生的错误代码
Simple regex
Regex quick reference
[abc]   A single character: a, b or c
[^abc]   Any single character but a, b, or c
[a-z]   Any single character in the range a-z
[a-zA-Z]   Any single character in the range a-z or A-Z
^   Start of line
$   End of line
\A   Start of string
\z   End of string
.   Any single character
\s   Any whitespace character
\S   Any non-whitespace character
\d   Any digit
\D   Any non-digit
\w   Any word character (letter, number, underscore)
\W   Any non-word character
\b   Any word boundary character
(...)   Capture everything enclosed
(a|b)   a or b
a?   Zero or one of a
a*   Zero or more of a
a+   One or more of a
a{3}   Exactly 3 of a
a{3,}   3 or more of a
a{3,6}   Between 3 and 6 of a
options: i case insensitive m make dot match newlines x ignore whitespace in regex o perform #{...} substitutions only once
Was working on a site that needed japanese and alphabetic letters and needed to 
validate input using preg_match, I tried using \p{script} but didn't work:

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)