我正在尝试一个简单的正则表达式对PHP中的字符串。我努力的正则表达式是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
好的,我做到了。但它不起作用。这一次它没有给出错误,但它似乎几乎匹配我放入的每一个字符串。就像它不应该匹配“vidhu 1911”,因为它有一个空间。但它的确如此。任何想法为什么? – Krimson 2012-08-08 11:42:53
这是一个不同的问题。我能告诉你什么吗?它几乎不会匹配每个字符串,它会匹配每个字符串。如果你只想匹配那些只包含这些字符**的字符串,你需要将你的正则表达式锚定到字符串开始和结尾'/^[A-Za-z0-9 \ -_] * $ /'。否则,它会匹配任何子字符串并说:“是的,我找到了一封信!”。请注意,它也会匹配空字符串!因为你使用了'*',如果你不想要这个,使用量词'+'来匹配至少一个字符。 – stema 2012-08-08 12:00:56