すべての Twitter のようなメンション (@something) に一致するが、電子メール アドレスには一致しない正規表現を JavaScript で作成するにはどうすればよいですか。
巨大なテキスト フィールドに無制限の数の言及をキャプチャする必要があります。「@」の前に印刷できない文字と括弧が含まれる文字列は、キャプチャする必要があります。
すべての Twitter のようなメンション (@something) に一致するが、電子メール アドレスには一致しない正規表現を JavaScript で作成するにはどうすればよいですか。
巨大なテキスト フィールドに無制限の数の言及をキャプチャする必要があります。「@」の前に印刷できない文字と括弧が含まれる文字列は、キャプチャする必要があります。
/(?<!\w)@\w+/g
簡単な解決策になりますが、JavaScriptは後読みをサポートしていないため、簡単ではないタスクになります。
var matches = str.match(/(^|\W)@\w+/g);
for (var i=0; i<matches.length; i++)
matches[i] = matches[i].replace(/^[^@]/, "");
(編集からのように)より広い範囲の文字をサポートしたい場合は、
/(?<![^\s(]@\S+/g // or respectively
/(^|[\s(])@\S+/
この正規表現を使用できます
/(\s|^)@[^\s]+/
\s
スペースを表します..