我试图让 preg_replace_callback 仅在不包含某个字符时才返回匹配项。
因此,如果字符串包含:
{xxxx}
返回匹配。如果它包含:
{xxxx|xxxx}
不要返回匹配项。
这是我的尝试:
\{(.*?!\|.*)}
谢谢你们!
我试图让 preg_replace_callback 仅在不包含某个字符时才返回匹配项。
因此,如果字符串包含:
{xxxx}
返回匹配。如果它包含:
{xxxx|xxxx}
不要返回匹配项。
这是我的尝试:
\{(.*?!\|.*)}
谢谢你们!
您正在寻找字符类。这是“除 ”之外的任何字符|
:
[^|]
应该是/{([^|])*}/
。它将匹配任何没有|
字符的字符串,甚至是空字符串。
这更像是一种“黑名单”方法。如果您知道有效字符是什么,则应使用“白名单”方法(字符类中允许的字符列表[]
),因为当前方法也允许#$!@~<?>":'{}[]
字符串中的字符。
您的完整模式将是这样的:
/{([^|]*)}/
匹配任何不是管道的字符,用花括号包裹。