编译失败:在偏移6处无需重复

时间:2011-12-10 05:12:16

标签: php preg-match

我不确定为什么这不起作用...在多个regex检查器和测试人员中完美运行。但是当它在PHP中运行时,我得到了这个错误:

Warning: `preg_match()` [function.preg-match]: 
Compilation failed: nothing to repeat at offset 6 in /home/splose/public_html/index/index.php on line 49

即时运行:

if(preg_match('[\\/^$.|?*+():<>]', $username)){}

2 个答案:

答案 0 :(得分:6)

也许您可以尝试划分您的模式?:

if(preg_match('/[\\/^$.|?*+():<>]/', $username)){}

直接来自PHP Docs

Often used delimiters are forward slashes (/), hash signs (#) and tildes (~).

答案 1 :(得分:0)

我认为您应该将正则表达式与定界符正斜杠(/)一起使用

// wrong pattern
$pattern = '[\\/^$.|?*+():<>]';
// right pattern
$pattern = '/[\\/^$.|?*+():<>]/';
if(preg_match($pattern, $username)){}