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 に答える