正则表达式OR

时间:2014-02-04 11:21:43

标签: javascript regex

我有下一个字符串:

1 2 OR 3 4 OR 5 OR 6 7 OR 8

我需要根据OR使用正则表达式将它分离到不同的部分,例如我需要接下来的这一行:

1
2 OR 3
4 OR 5 OR 6
8 OR 8

//1 (2 OR 3) (4 OR 5 OR 6) (7 OR 8)

怎么做 - 谢谢!)

对不起,但忘了提,这里不仅仅是数字:第一个第二或第三个第四或第五或第六个第七或第八个

4 个答案:

答案 0 :(得分:3)

使用与任意数量OR和其他数字匹配的数字匹配的正则表达式:

var s = '1 2 OR 3 4 OR 5 OR 6 7 OR 8';

var re = /\d+(?: OR \d+)*/g;
var m;
while ((m = re.exec(s)) != null) {
  console.log(m[0]);
}

演示:http://jsfiddle.net/Guffa/q5fw6/

答案 1 :(得分:2)

这个简单的正则表达式应该可以工作:

var str = '1 2 OR 3 4 OR 5 OR 6 7 OR 8';
str.match(/\w+( OR \w+)*/g);

答案 2 :(得分:0)

您可以使用:

x.replace(/(\d+)\s+(\d+)/g, "$1\n$2");

其中x"1 2 OR 3 4 OR 5 OR 6 7 OR 8"

输出将是:

1 
2 OR 3 
4 OR 5 OR 6 
7 OR 8

答案 3 :(得分:0)

这可能是你需要的:

(?:^|(?<=\d ))(\d+(?: +OR +\d+)*)(?=(?: +\d|$))

将输出以下匹配项:

[Match number 1]
[Capture Group 1] '1' found at character 1

[Match number 2]
[Capture Group 1] '2 OR 3' found at character 3

[Match number 3]
[Capture Group 1] '4 OR 5 OR 6' found at character 10

[Match number 4]
[Capture Group 1] '7 OR 8' found at character 22