8

「ハッシュタグ」を識別するために使用するJS正規表現を理解するために、いくつかの助けが必要です。ハッシュタグは、次のすべてに一致する必要があります。

  1. 通常のTwitterスタイルのハッシュタグ:#foobar
  2. 前にテキストが付いたハッシュタグ:abc123#xyz456
  3. スペースが含まれるハッシュタグ。次のように示されます:(つまり#[foo bar]、[]はハッシュタグの区切り文字として機能します)

1と2には、次の形式のものを使用していました。

var all_re =/\S*#\S+/gi;

3に拡張する方法がわからないようです。正規表現が苦手です。助けてください。

ありがとう!

4

3 に答える 3

31

したがって、すべての非スペース文字、またはとの間の(および含む)任意の文字と一致する必要が[あり]ます。

\S*#(?:\[[^\]]+\]|\S+)

説明:

\S*                # any number of non-white space characters
#                  # matches #
(?:                # start non-capturing group
    \[             # matches [
    [^\]]+         # any character but ], one or more
    \]             # matches ]
    |              # OR
    \S+            # one or more non-white space characters
)                  # end non-capturing group

参照交互否定文字クラス

于 2012-08-07T13:25:26.333 に答える
2

これはどう?

var all_re =/(\S*#\[[^\]]+\])|(\S*#\S+)/gi;
于 2012-08-07T13:24:48.293 に答える
0

同様の問題が発生しましたが、文字列がハッシュタグで開始および終了する場合にのみ一致させたいと考えています。同様の問題ですが、うまくいけば、他の誰かが私のソリューションを使用できるようになります。

これは「#myhashtag」と一致しますが、「gfd#myhashtag」または「#myhashtag」とは一致しません。

/^#\S+$/

^ #start of regex
\S #Any char that is not a white space
+ #Any number of said char
$ #End of string

そのような単純な。

于 2013-08-27T10:15:59.513 に答える