什么是正则表达
#node #php #regex

正则表达式(也称为“ Regex”或“ Regexp”)是定义搜索模式的字符序列。此搜索模式可用于匹配(有时更换)特定字符串,或检查字符串是否包含指定的模式。

换句话说,正则表达式是描述字符串中模式的一种方式,它们被广泛用于文本处理,数据验证和各种编程语言(例如Python,Perl和JavaScript),以匹配与模式相匹配的字符串。

以下是正则表达式的一些示例:

\ d 匹配任何数字(等效于[0-9])
\ w 匹配任何单词字符(相当于[A-ZA-Z0-9_])
\ s 匹配任何空格字符(空间,选项卡,newline等)
匹配除newline以外的任何字符
\ b 匹配单词边界(例如单词和空间之间的边界)
重要的是要注意,正则表达式中字符的含义可以取决于使用它们的上下文以及正在解释表达式的Regex引擎。

量词:这些字符允许您指定应匹配字符或字符组的次数。例如,{3}恰好匹配“ a”的字符三次,而\ d {1,3}匹配一到三位数。

字符类:这些允许您匹配一组字符的任何一个字符。例如,[aeiou]匹配任何小写元音,而[a-z]匹配任何大写字母。

交替:这使您可以匹配几个替代方案之一。例如,(狗|猫)匹配字符串“狗”或字符串“猫”。

分组:这使您可以在整个组中分组字符,并将量词,交替或其他操作员应用于整个组。例如,(ABC)+匹配字符串“ ABC”的一个或多个连续出现。

锚点:这些字符允许您指定匹配的位置相对于字符串的开始或结尾。例如, ^匹配字符串的开头,而$匹配字符串的末端。

示例

要在PHP中创建正则表达方式,您可以使用 /(斜杠)符号来界定模式。在模式中,您可以使用字符的组合,特殊字符(也称为“ Metacharacters”)和字符类来定义所需的模式。

这是创建正则表达式模式以匹配格式yyyy-mm-dd的示例:

$pattern = "/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/";

模式开始时的 ^字符与字符串的开始匹配。

另一个示例
创建正则表达个人电子邮件无效

$pattern = "/^[a-zA-Z0-9._%+-]+@(gmail|yahoo|hotmail)\.(com|co\.uk)$/";

模式的解释:

模式开始时的 ^字符与字符串的开始匹配。

[a-za-z0-9。 ),百分比(%),plus(+)和dash( - )字符。这代表了电子邮件地址的用户名部分。

@字符匹配电子邮件地址中的 @符号。

(gmail | yahoo | hotmail)匹配“ gmail”,“ yahoo”或“ hotmail”。这代表了电子邮件地址的域名部分。

。字符匹配域名中的周期(。)字符。

(com | co.uk)匹配“ com”或“ co.uk”。这代表了电子邮件地址的顶级域部分。

模式末尾的$字符与字符串的末端匹配。

因此,该模式将与具有用户名的电子邮件地址匹配,其次是“@”符号,然后是“ gmail”,“ Yahoo”或“ Hotmail”的域名由“ com”或“ co.uk”的顶级领域。任何与此模式不匹配的电子邮件地址都将被视为无效。

[0-9] {4}完全匹配4位数字(代表年份)。

- (0 [1-9] | 1 [0-2]) - 匹配“ 01”与“ 09”(0 [1-9])或“ 10”至“ 12”(1 [0 [0) -2]),被破折号隔开。这代表一个月。

(0 [1-9] | [1-2] [0-9] | 3 [0-1])与“ 01”与“ 09”(0 [1-9])或“ 10”匹配“ 29”([1-2] [0-9])或“ 30”至“ 31”(3 [0-1]),代表一天。

模式末尾的$字符与字符串的末端匹配。

您可以将此模式与诸如preg_match或preg_replace之类的功能一起使用,以对符合模式的字符串执行操作。