不能在正则表达式中使用某些字符

Sho*_*lin 1 php regex

if(!eregi("^([0-9a-z_\[\]\*\- ])+$", $subuser))
    $form->setError($field, "* Username not alphanumeric");
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我为什么不允许这样的字符-*

if(!eregi("^([0-9a-z])+$", $subuser))
    $form->setError($field, "* Username not alphanumeric");
Run Code Online (Sandbox Code Playgroud)

这是原始代码.一位朋友将其更改为顶部,它将允许az和0-9,但它不允许我需要的其他字符.谁能帮我?

提前致谢.

Hen*_*ing 7

你的正则表达式使用PCRE语法,所以你必须使用preg_match()而不是eregi().

请尝试使用此代码:

else if (!preg_match("/^([0-9a-z_\[\]* -])+$/i", $subuser)) {
$form->setError($field, "* Username not alphanumeric");
}
Run Code Online (Sandbox Code Playgroud)