テキストから @メンションを抽出する
メンションは @ にユーザー名が続く形式です。メンションの抽出、ユーザー名の検証、プロフィールへのリンク方法を学びましょう。
- 1
メンションとは、@ に続くユーザー名 (英字、数字、アンダースコア、ハイフン) のことです。正規表現 @[\w]+ でメンションを見つけられます。ドットを許可するプラットフォームもあります (メールアドレス風)。@ は文字列先頭にあるか、前に空白がなければなりません (そうでなければメールアドレスの一部です)。抽出したユーザー名は、ユーザーデータベースと照合して検証してください。
- 2 正規表現テスター →
@\w[\w.]*\w または (より単純な) @\w+ ですべてのメンションを検索します。「Thanks @alice and @bob_smith for the help! CC: @team.frontend」のようなテキストでテストしてください。ツールはすべてのマッチを表示します。前が空白か文字列先頭かを確認して、メンションとメールアドレスを区別します。
- 3 正規表現置換ツール →
メンションをプロフィールにリンクします: @username を <a href="/users/username">@username</a> に置き換えます。コールバック付き置換でユーザーを引き、@([\w]+) を、ユーザーが存在すればそのプロフィールへのリンクに、存在しなければテキストのままに置き換えます。
よくある質問
- メンションとメールアドレスはどう区別しますか?
- 文脈を確認します。@ の前が単語構成文字 (空白なし) なら、それはおそらくメールアドレスです ([email protected])。前に空白または文字列先頭があればメンション (@user) です。後読み (?<=\s|^)@\w+ または (?:^|\s)@(\w+) を使えば、メンションだけにマッチします。
- ユーザー名に使える文字は何ですか?
- 一般的には英字、数字、アンダースコア ([a-zA-Z0-9_]) です。ハイフンやドットを許可するプラットフォームもあります (ただし連続ドットや末尾ドットは不可)。自分のプラットフォームのユーザー名規則を確認してください。抽出したメンションはユーザーデータベースと照合して検証します。@word の形がすべて実在ユーザーであるとは限りません。