PHP:正则表达式 - 未知修饰符错误

时间:2012-08-08 10:08:15

标签: php regex

我正在尝试一个简单的正则表达式对抗PHP中的字符串。我正在尝试的正则表达式是

[A-Za-z0-9\-_]*

当我在php中使用它时,我得到一个错误说:

Warning: preg_match(): Unknown modifier '*' in "C:/apache/....." on line 2

这是我的代码:

<?php
if(preg_match("[A-Za-z0-9\-_]*",'vidhu_1911')){
    echo "it matched!";
}else{
    echo "fail to match";   
}
?>
你告诉我我做错了吗?

谢谢, Vidhu

2 个答案:

答案 0 :(得分:11)

你的正则表达式需要正则表达式分隔符

<?php
if(preg_match("/[A-Za-z0-9\-_]*/",'vidhu_1911')){
    echo "it matched!";
}else{
    echo "fail to match";   
}
?>

在你的代码中,方括号被解释为正则表达式分隔符,结束分隔符后面的字符是正则表达式的修饰符。因此*被视为修饰符,但它不是有效的修饰符。

有关详细信息,请参阅Delimiters on php.net

答案 1 :(得分:2)

你必须用正斜杠包围正则表达式:

<?php
if(preg_match("/[A-Za-z0-9\-_]*/",'vidhu_1911')){
    echo "it matched!";
}else{
    echo "fail to match";   
}
?>