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

PHP正则表达式错误。编译失败,php,regex,Php,Regex,我收到这个警告信息: 警告:预匹配:编译失败:在偏移量0处没有要重复的内容 有什么不对劲吗?你必须逃跑* 星号是一个量词,表示前面模式的一次或多次出现。该错误是由模式开头的第一个*引起的 更新: 正如注释中所指出的,在字符类之外不需要转义连字符。你不妨写信 if (preg_match('/\*\-\*\-\*/', $controlNum)) 或者对非捕获组使用限制量词: if (preg_match('/\*-\*-*/', $controlNum)) 这些应该匹配*-*-* 你必须逃跑

我收到这个警告信息:

警告:预匹配:编译失败:在偏移量0处没有要重复的内容

有什么不对劲吗?

你必须逃跑*

星号是一个量词,表示前面模式的一次或多次出现。该错误是由模式开头的第一个*引起的

更新:

正如注释中所指出的,在字符类之外不需要转义连字符。你不妨写信

if (preg_match('/\*\-\*\-\*/', $controlNum))
或者对非捕获组使用限制量词:

if (preg_match('/\*-\*-*/', $controlNum))
这些应该匹配*-*-*

你必须逃跑*

星号是一个量词,表示前面模式的一次或多次出现。该错误是由模式开头的第一个*引起的

更新:

正如注释中所指出的,在字符类之外不需要转义连字符。你不妨写信

if (preg_match('/\*\-\*\-\*/', $controlNum))
或者对非捕获组使用限制量词:

if (preg_match('/\*-\*-*/', $controlNum))

这些应该匹配*-*-*

除了*是必须转义的保留字符:您想在这里检查什么?顺便说一句:这里没有必要转义连字符,它只是方括号中的保留字符。您转义了那些不会首先转义的字符*导致了错误,因为,它是一个量词,应该跟在一个可量化的标记后面。我的答案对你有用吗?如果是这样的话,请考虑接受下面的答案。除了*是一个必须被释放的保留字符:你想在这里检查什么?BTW:这里不需要逃出连字符,它只是一个保留括号中的方括号。你确实逃脱了那些无法逃脱的字符。它是一个量词,应该跟在一个可量化的标记后面。我的答案对你有用吗?如果确实如此,请考虑接受下面的答案。