1

YouTubeの動画からタイトルを削りました。私はこれらに似た文字列に減らしました:

string1 = "Red~VS~Blue";
string2 = "oRange v wHite";
string3 = "black knights verses purple people";

team0 = string.split(regexp)[0];
team1 = string.split(regexp)[1];

Javascriptのstring.splitメソッドを使用して、各文字列を2つのチーム名の配列に分割しようとしています。スペースや区切り文字は後で簡単にクリーンアップできるため、通過するかどうかは関係ありません。また、正規表現にいくつかの基本的なタイプミスキャッチ機能を持たせたいです。

正規表現:

regexp = /\Wv(s|\W)/i; \\Should match " v " or " vs", gives 3 results instead of 2
regexp = /\Wv[s\W]/i; \\Works as I thought the above should 
regexp = /\W(vs|v\W|vers[eu]s)/i \\attempt at dealing with typos, doesn't work

書いたものをすべて囲むのではなく、かっこを追加()すると、分割に結果が追加される傾向があります。私はここここで正規表現に関するこれらのチュートリアルとstackoverflowに関するいくつかの回答を読みましたが、私を助けるために関連するものを見つけることができません。この問題を解決するにはどうすればよいですか?

4

1 に答える 1

3
result = subject.split(/\W+v(?:ers[ue])?s?\W+/i);

すべてのサンプル文字列を正しく分割します。

説明:

\W+        # Match one or more non-word characters
v          # Match v
(?:        # followed by
 ers[ue]   # ersu or erse
)?         # (optionally)
s?         # followed by s (optionally)
\W+        # Match one or more non-word characters

ただし、これはまたはと一致しversuますverse

于 2012-09-17T07:43:08.640 に答える