0

ここでのスタックオーバーフローの質問では、次のコードでメールを削除できることが説明されています。

$pattern = "/[^@\s]*@[^@\s]*\.[^@\s]*/";
$replacement = "[removed]";
preg_replace($pattern, $replacement, $string); 

これにより、johndoe @ gmail.comなどが削除されます。テキストのチャンクから@johnDoeなどを削除するように、正規表現を変更するにはどうすればよいですか。

正規表現がよくわかりません。

4

1 に答える 1

1

使用する

$pattern = "/@[^@\s]*/";

[^@\s]

  • \s任意のスペース文字を表します
  • [@\s]文字グループを表し、\s(つまりスペース)と@文字を含みます。@またはのいずれかに一致します\s
  • [^@\s]ではない文字グループを表します @\s
  • 結局のところ、文字または(つまりスペース)[^@\s]ではない単一の文字に一致します@\s

*前のトークンを表すと(つまり[^@\s]ここで)、0回以上繰り返すことができます。したがって、または[^@\s]*を含まない限り、任意の長さの文字列に一致します@\s


ちなみに、あなたのリンクは、電子メールを照合するための非常に単純化された正規表現を提供します。電子メールを照合する完璧な方法は簡単なことではありません。

于 2013-01-27T01:50:08.570 に答える