php正则表达式中的/ six是什么?

时间:2014-04-17 06:23:48

标签: php regex

Regex to validate JSON 我正在尝试编写一个正则表达式来保存json文件。通过在互联网上搜索,我得到了上述问题。我是php和regex的新手。

$pcre_regex = '
 /
 (?(DEFINE)
 (?<number>   -? (?= [1-9]|0(?!\d) ) \d+ (\.\d+)? ([eE] [+-]? \d+)? )    
 (?<boolean>   true | false | null )
 (?<string>    " ([^"\\\\]* | \\\\ ["\\\\bfnrt\/] | \\\\ u [0-9a-f]{4} )* " )
 (?<array>     \[  (?:  (?&json)  (?: , (?&json)  )*  )?  \s* \] )
 (?<pair>      \s* (?&string) \s* : (?&json)  )
 (?<object>    \{  (?:  (?&pair)  (?: , (?&pair)  )*  )?  \s* \} )
 (?<json>   \s* (?: (?&number) | (?&boolean) | (?&string) | (?&array) | (?&object) )     \s* )
 )
 \A (?&json) \Z
 /six   
';

在上面的代码中,我无法理解什么是/ six和\ A(?&amp; json)\ Z ..任何人都请帮帮我。

1 个答案:

答案 0 :(得分:3)

不是six。它是six。他们是模式修饰符。

来自PHP manual documentation on Pattern Modifiers

  

sPCRE_DOTALL)如果设置了此修饰符,则模式中的点元字符将匹配所有字符,包括换行符。没有它,排除了换行符。此修饰符等效于Perl&#s; s修饰符。诸如[^ a]之类的否定类始终匹配换行符,与此修饰符的设置无关。

     

iPCRE_CASELESS)   如果设置了此修饰符,则模式中的字母将匹配大写和小写字母。

     

xPCRE_EXTENDED)   如果设置了此修饰符,则模式中的空白数据字符将被完全忽略,除非转义或在字符类中,并且字符类外的未转义#和下一个换行符(包括在内)之间的字符也将被忽略。

\A^类似,但如果您有一个跨越多行的字符串,\A匹配整个字符串的开头,则相反只是一行开头。