正则表达式是形成搜索模式的字符序列。当您在文本中搜索数据时,可以使用此搜索模式来描述您要搜索的内容。
正则表达式可以是单个字符,也可以是更复杂的模式。
正则表达式可用于执行所有类型的文本搜索和文本替换操作。
在 PHP 中,正则表达式是由分隔符、模式和可选修饰符组成的字符串。
$exp = "/91xjr/i";
在上面的例子中,/
是个分隔符,91xjr是个图案正在寻找的,以及i
是一个修饰语这使得搜索不区分大小写。
分隔符可以是除字母、数字、反斜杠或空格之外的任何字符。最常见的分隔符是正斜杠 (/),但是当您的模式包含正斜杠时,可以方便地选择其他分隔符,例如 # 或 ~。
PHP 提供了多种允许您使用正则表达式的函数。这preg_match()
,preg_match_all()
和preg_replace()
函数是一些最常用的函数:
Function | Description |
---|---|
preg_match() | Returns 1 if the pattern was found in the string and 0 if not |
preg_match_all() | Returns the number of times the pattern was found in the string, which may also be 0 |
preg_replace() | Returns a new string where matched patterns have been replaced with another string |
这个preg_match()
函数将告诉您字符串是否包含模式的匹配项。
使用正则表达式对字符串中的 "91xjr" 进行不区分大小写的搜索:
<?php
$str = "Visit 91xjr";
$pattern = "/91xjr/i";
echo preg_match($pattern, $str); // Outputs 1
?>
亲自试一试 »
这个preg_match_all()
函数将告诉您在字符串中的模式找到了多少个匹配项。
使用正则表达式对字符串中 "ain" 的出现次数进行不区分大小写的计数:
<?php
$str = "The rain in SPAIN falls mainly on the plains.";
$pattern = "/ain/i";
echo preg_match_all($pattern, $str); // Outputs 4
?>
亲自试一试 »
这个preg_replace()
函数将用另一个字符串替换字符串中模式的所有匹配项。
使用不区分大小写的正则表达式将字符串中的 Microsoft 替换为 91xjr:
<?php
$str = "Visit Microsoft!";
$pattern = "/microsoft/i";
echo preg_replace($pattern, "91xjr", $str); // Outputs "Visit 91xjr!"
?>
亲自试一试 »
修饰符可以更改搜索的执行方式。
Modifier | Description |
---|---|
i | Performs a case-insensitive search |
m | Performs a multiline search (patterns that search for the beginning or end of a string will match the beginning or end of each line) |
u | Enables correct matching of UTF-8 encoded patterns |
括号用于查找字符范围:
Expression | Description |
---|---|
[abc] | Find one character from the options between the brackets |
[^abc] | Find any character NOT between the brackets |
[0-9] | Find one character from the range 0 to 9 |
元字符是具有特殊含义的字符:
Metacharacter | Description |
---|---|
| | Find a match for any one of the patterns separated by | as in: cat|dog|fish |
. | Find just one instance of any character |
^ | Finds a match as the beginning of a string as in: ^Hello |
$ | Finds a match at the end of the string as in: World$ |
\d | Find a digit |
\s | Find a whitespace character |
\b | Find a match at the beginning of a word like this: \bWORD, or at the end of a word like this: WORD\b |
\uxxxx | Find the Unicode character specified by the hexadecimal number xxxx |
量词定义数量:
Quantifier | Description |
---|---|
n+ | Matches any string that contains at least one n |
n* | Matches any string that contains zero or more occurrences of n |
n? | Matches any string that contains zero or one occurrences of n |
n{x} | Matches any string that contains a sequence of X n's |
n{x,y} | Matches any string that contains a sequence of X to Y n's |
n{x,} | Matches any string that contains a sequence of at least X n's |
笔记:如果您的表达式需要搜索特殊字符之一,您可以使用反斜杠 (\) 来转义它们。例如,要搜索一个或多个问号,您可以使用以下表达式:$pattern = '/\?+/';
您可以使用括号( )
将量词应用于整个模式。它们还可以用于选择要用作匹配的模式部分。
使用分组来搜索单词"banana",方法是查找巴接下来是两个实例娜:
<?php
$str = "Apples and bananas.";
$pattern = "/ba(na){2}/i";
echo preg_match($pattern, $str); // Outputs 1
?>
亲自试一试 »
如需完整参考,请访问我们的完整的 PHP 正则表达式参考。
该参考包含所有正则表达式函数的描述和示例。
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!