PHP preg_match匹配Text-Text-Integer格式出现Unknown modifier '-'错误怎么办
问题原因
- PHP的
preg_match函数要求正则表达式必须包裹在分隔符中,常用分隔符为/、#、~等特殊字符。你当前的正则没有手动设置分隔符,PHP会自动把正则开头的(识别为分隔符,当正则匹配到第一个)时就判定正则主体结束,后面的-会被误识别为正则修饰符,所以才会抛出“Unknown modifier '-'”报错,和-本身是否转义无关。 - 你原有的正则规则只能匹配「单个字母-单个字母-单个数字」的格式,无法匹配
domain-id-555这类多字符的域名片段,需要补充量词+匹配至少1个对应字符。
修正后的代码
<?php // 用/作为正则分隔符,补充量词+匹配多字符 $get_keyword_value = "/([a-zA-Z]+)-([a-zA-Z]+)-([0-9]+)/"; $get_current_domain_value = "domain-id-555"; if(preg_match($get_keyword_value, $get_current_domain_value)){ echo"Match"; } else{ echo"No match"; } ?>
如果担心正则内容和/冲突,也可以换用其他分隔符,比如#:$get_keyword_value = "#([a-zA-Z]+)-([a-zA-Z]+)-([0-9]+)#";
内容的提问来源于stack exchange,提问作者Europa
相关产品推荐
相关产品推荐

