ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
**用于字符串的匹配,查找,替换,分割。** 语法:“/表达式/[修正符]” ## 1.定界符 '/'可以是其他符号,但不能是字符数字,斜线\\ ## 2.原子 正则最基本组成单元,每个模式最少包含一个。     普通字符,     需要使用\转义的特殊字符(",\*?),     非打印字符:\f换页,\n换行,\r回车,\t制表符     通用字符:\d匹配0-9,\D非\\d,\w字母数字下线,\W非字\w,\s,空白     自定义原子表:[。。。]     表达式边界:^必须以此开头, $必须以此结尾。     单词边界: "/b",              /\bis\b/,匹配is,不匹配this,island             /bis,匹配is和island,不匹配this。             \Bis\B,只匹配单词内部       重复匹配:          {m},  {m},{m,},{m,n}    *任意次,+至少一次,?最多一次     任何字符:    .匹配换行符以外任何字符。 使用".\*",匹配任何字符。 ## 3.原子表-方括号表达式。     [abc]  ,表示一个字符 a或b或c   \\[a-z\]\[0-9\]        \\[^]    取反         /\[a-zA-Z]/匹配所有大小写字母         /^[a-z]\[0-9]$/匹配比如“z2”、 “t6” 、“g7”         /0[xX]\[0-9a-fA-F\]/匹配一个简单的十六进制数字,如“0x9”。         /0?\[ xX\]\[0-9a-fA-F\]+/匹配十六进制数字,可以匹配“0x9B3C”或者“X800”等。  \*\\d 匹配一个数字;等价于\[0-9\]   \*\\D 匹配除数字以外任何一个字符;等价于\[^0-9\]   \*\\w 匹配一个英文字母、数字或下划线;等价于\[0-9a-zA-Z\_\]   \*\\W 匹配除英文字母、数字和下划线以外任何一个字符;等价于\[^0-9a-zA-Z\_\]   \*\\s 匹配一个空白字符;等价于\[\\f\\n\\r\\t\\v\]   \*\\S 匹配除空白字符以外任何一个字符;等价于\[^\\f\\n\\r\\t\\v\] ## 4.模式单元 ()可以做一个单元被单独使用。 (abc)    ,一个整体,abc    \\\\   (red|blue) 字串red或blue /(Dog)+/匹配的“Dog”、“DogDog”、“DogDogDog”, /You (very )+ old/匹配“You very old”、“You very very old” /Hello (world|earth)/匹配“Hello world”、“Hello earth” ## 5.重新使用模式单元(子存储)。 系统会自动将模式单元中的匹配一次储存起来。在需要时使用\\\\1,\\\\2,或\\$1,\\$2,使用。     不使用子存储:(?:) 拒绝贪婪匹配(.\*?),贪婪匹配(.\*) ## 6.模式修正符:     i    不区分大小写。     m字符视为多行。 相关函数: preg_match -- 进行正则表达式匹配,只匹配一次,返回1,否则0, preg_match_all -- 进行全局正则表达式匹配 , 返回共计匹配的个数。 和下面的一样,不同的是匹配到最后(全局匹配) 格式:preg_match("正则表达式","被匹配的字串",存放结果的变量名,获取匹配索引位置,起始偏移量) 起始偏移量:从指定位置开始匹配  preg_grep --  返回与模式匹配的数组单元   preg_replace -- 执行正则表达式的搜索和替换   preg_replace_callback -- 用回调函数执行正则表达式的搜索和替换  preg_quote -- 转义正则表达式字符 preg_split,通过正则分割字符串。 ## 例:          手机: \[1\]\[3-8\]\[0-9\]{9}           邮箱: /^\[0-9a-zA-Z\_-\]+@\[0-9a-zA-Z\_-\]+(\\.\[0-9a-zA-Z\_-\]+){0,3}$/         子存储:                 $str="AABBCC";                 echo preg\_replace("/(.\*?)/", "\\$1", $str);            \\\\拒绝子存储 (?:)                 preg\_replace("/(\\d{4})-(\\d{2})-(\\d{2})/","\\$2/\\$3/\\$1",'2016-2-16');