PHP 正则表达式错误。编译失败

Don*_*ton 2 php regex

if (preg_match('/*\-*\-*/', $controlNum))
Run Code Online (Sandbox Code Playgroud)

我收到此警告消息:

警告:preg_match():编译失败:在偏移量 0 处无需重复

可能有什么问题?

Wik*_*żew 5

你必须逃 *

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)

这些应该匹配*-*-*