我正在尝试一个简单的正则表达式对抗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
答案 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";
}
?>