PHP Preg_匹配一个特殊字符添加

PHP Preg_匹配一个特殊字符添加,php,Php,我想在我的字符串中搜索特殊字符连字符“-”和美元“$”,因为下划线在我的字符串中总是相同的。 字符串可以是大写或小写 它应该匹配“-”和接下来的2个单词、4个数字和美元“$” 但我在特殊字符连字符“-Dollar'$”中搞砸了,并且得到了警告 有什么帮助吗 #!/usr/bin/env php <?php $line = "ESFEDTH-ZD0099$"; if(!preg_match("(^[a-zA-Z0-9]*)-([a-zA-Z]{2})([0-9]{4})", $line))

我想在我的字符串中搜索特殊字符连字符“-”和美元“$”,因为下划线在我的字符串中总是相同的。 字符串可以是大写或小写 它应该匹配“-”和接下来的2个单词、4个数字和美元“$” 但我在特殊字符连字符“-Dollar'$”中搞砸了,并且得到了警告 有什么帮助吗

#!/usr/bin/env php
<?php

$line = "ESFEDTH-ZD0099$";
if(!preg_match("(^[a-zA-Z0-9]*)-([a-zA-Z]{2})([0-9]{4})", $line)) {
    echo "A match was not found.";
} else {
    echo "A match was found.";
}
?>
#/usr/bin/env-php
结果是错误的: 警告:preg_match():第8行/Users/skull/Desktop/php/test.php中的未知修饰符“-”
找到了匹配项。

您必须用\转义特殊字符,因此如果您想要scape,您必须编写\_


问候。

您的问题涉及下划线,但示例中没有下划线


而且,看起来你的逻辑是前后颠倒的。preg_match()如果存在匹配项,则返回1,如果存在匹配项,则写入“未找到匹配项”

最后,需要对正则表达式进行定界

<?php

$line = "ESFEDTH_ZD0099";
if(preg_match("/(^[a-zA-Z0-9]*)_([a-zA-Z]{2})([0-9]{4})/", $line)) {
    echo "A match was found.";
} else {
    echo "A match was not found.";
}
?>


您的正则表达式需要分隔符。试试
“/(^[a-zA-Z0-9]*)-([a-zA-Z]{2})([0-9]{4})/”
另外,看起来您的逻辑是前后颠倒的
preg_match()
如果存在匹配项,则返回1,如果存在匹配项,则写入“未找到匹配项”