正则表达式分割'VS Teamnames'字符串

时间:2012-09-17 07:39:14

标签: javascript regex

我从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方法将每个字符串分解为两个团队名称的数组。空间或分隔符是否通过无关紧要,因为它们可以在以后轻松清理。我还希望regexp具有一些基本的拼写错误捕获功能。

正则表达式:

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

当我添加更多括号()而不是包含我写的任何内容时,它往往会为分割添加额外的结果。我已经阅读了有关正则表达式herehere的这些教程以及stackoverflow上的一些答案,但我找不到任何相关的帮助。我该如何解决这个问题?

1 个答案:

答案 0 :(得分: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

这也匹配versuverse