[英]preg_match for string not work
我有类似p88t9014-name
字符串,这里的p
是产品, t
是子产品ID,之后-
用户定义的name
是任何名称。 我尝试使用此代码将带有preg_match
字符串匹配::
$name="p88t0056-name";
if(preg_match('/p[0-9]t[0-9]-[A-Z,a-z]/',$name,$match)) {
echo "yes";
} else {
echo "No";
}
print_r($m);
我只是尝试匹配格式为p[number]t[number]-[anystring]
。 但我的代码无法正常工作。
您需要在字符类之后放置量词:
'/p[0-9]+t[0-9]+-[A-Za-z]+/'
此正则表达式将为您工作:
/p(\\d+)t(\\d+)-(\\w+)/g
说明:
p
匹配字母p
\\d+
匹配数字0-9
t
匹配字母t
\\d+
匹配数字0-9
-
匹配破折号'-'
\\W+
匹配任何单词字符[a-zA-Z0-9_]和g以捕获所有匹配项。
我也不是正则表达式专家,但是尝试http://www.regex101.com上的多个选项会有所帮助,因为它在右侧面板中显示了字符说明。 希望对将来有帮助:)
正则表达式[0-9]
中的字符恰好匹配一个字符, [AZ,az]
也正好匹配,因此$ name与您提供的模式不匹配。 诸如“ p8t0-A”和“ p0t2”之类的字符串通过了测试。
此外,您的模式中的另一个问题是: [AZ,az]
不仅匹配字母,还匹配,
(单个逗号)。 我猜您需要的模式是p[0-9]+t[0-9]+-[A-Za-z]+
,其中+
s表示“至少发生一次”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.