我如何检查是否有符号 - 在 php 中与正则表达式一起出现


How can I check if there the sign - appears with regex in php?

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 中做到了!