if (preg_match('/*\-*\-*/', $controlNum))
Run Code Online (Sandbox Code Playgroud)
我收到此警告消息:
警告:preg_match():编译失败:在偏移量 0 处无需重复
可能有什么问题?
你必须逃 *
if (preg_match('/\*\-\*\-\*/', $controlNum))
Run Code Online (Sandbox Code Playgroud)
星号是一个量词,表示前面的模式出现一次或多次。该错误是由*模式开头的第一个引起的。
更新:
正如评论中指出的那样,在字符类之外时不需要转义连字符。你还不如写
if (preg_match('/\*-\*-*/', $controlNum))
Run Code Online (Sandbox Code Playgroud)
或者也使用带有非捕获组的限制量词:
if (preg_match('/\*(?:-\*){2}/', $controlNum))
Run Code Online (Sandbox Code Playgroud)
这些应该匹配*-*-*。