This if condition :
if (preg_match('/^[a-zA-Z_]+'z/', $network_path))
跳过以下字符串:嘭��
我怎样才能改进这个正则表达式,让它接受像上面这样的字符串.. ?
>此[a-zA-Z_]
是一个字符类。此构造匹配方括号内定义的字符中的一个字符。
因此,此类匹配 a 到 z、A 到 Z 和下划线。如果您还想匹配破折号,则只需将其添加到类中即可。但要小心,-
是角色类中的一个特殊字符,所以如果你想从字面上匹配它,你需要转义它或把它放在类的开头或结尾。
if (preg_match('/^[-a-zA-Z_]+'z/', $network_path))
或
if (preg_match('/^[a-zA-Z_-]+'z/', $network_path))
或
if (preg_match('/^[a-zA-Z'-_]+'z/', $network_path))
if (preg_match('/^[-a-zA-Z_]+'z/', $network_path))
(不是PHP的人,所以ymmv,但是...)
[] 中的字符被大多数 perl 兼容的正则表达式引擎视为字符类。字符类可以遵循我的修饰符,例如 +,它将接受该类中的 1 个或多个字符。因此,如果您只是在字符类中添加破折号,您应该得到您想要的东西(或者至少,您在 ruby 中做到了!