1

我试图让 preg_replace_callback 仅在不包含某个字符时才返回匹配项。

因此,如果字符串包含:

{xxxx}

返回匹配。如果它包含:

{xxxx|xxxx}

不要返回匹配项。

这是我的尝试:

\{(.*?!\|.*)}

谢谢你们!

4

3 回答 3

1

您正在寻找字符类这是“除 ”之外的任何字符|

[^|]
于 2012-06-09T14:40:08.637 回答
1

应该是/{([^|])*}/。它将匹配任何没有|字符的字符串,甚至是空字符串。

这更像是一种“黑名单”方法。如果您知道有效字符是什么,则应使用“白名单”方法(字符类中允许的字符列表[]),因为当前方法也允许#$!@~<?>":'{}[]字符串中的字符。

于 2012-06-09T14:42:02.597 回答
1

您的完整模式将是这样的:

/{([^|]*)}/

匹配任何不是管道的字符,用花括号包裹。

于 2012-06-09T15:08:36.297 回答