1

すべての Twitter のようなメンション (@something) に一致するが、電子メール アドレスには一致しない正規表現を JavaScript で作成するにはどうすればよいですか。

巨大なテキスト フィールドに無制限の数の言及をキャプチャする必要があります。「@」の前に印刷できない文字と括弧が含まれる文字列は、キャプチャする必要があります。

4

3 に答える 3

4
/(?<!\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+/
于 2013-01-14T17:01:33.237 に答える
3

この正規表現を使用できます

/(\s|^)@[^\s]+/

\sスペースを表します..

于 2013-01-14T16:55:27.927 に答える
0

あなたに答えるクイックJSFiddle:

var re = /\s@[\w\-]/ 

またはここをクリック

コンソールで正規表現の結果を確認できることに注意してください (たとえば、Firebug)。

于 2013-01-14T17:04:44.803 に答える