RegEx中的多个匹配字符在最后一个结束时结束

时间:2015-02-01 19:07:04

标签: javascript regex

  

大家好,我是stackoverflow新手。

     

如果我对提出这个问题有任何不妥之处,希望能够纠正我。   :)

如果我的测试字符串是'One\nTwo\n\nFour'

我在JavaScript中使用RegExp /(.)*\n/

符合'One\nTwo\n\n'而非'One\n', 'Two\n' and '\n'符合我的期望。

我想得到的结果是'One', 'Two', '' and 'Four'


非常感谢@ Dalorzo的回答。

'One\nTwo\n\nFour'.split(/\n/g) //outputs ["One", "Two", "", "Four"]

2 个答案:

答案 0 :(得分:4)

也许更好的可能是实现同一目标的分裂?通过

使用正则表达式

'One\nTwo\n\nFour'.split(/\n/) //outputs ["One", "Two", "", "Four"]

没有 正则表达式,如:

'One\nTwo\n\nFour'.split('\n') //outputs ["One", "Two", "", "Four"]

答案 1 :(得分:3)

(.*?)(?:\n|$)

让你贪婪的搜索非贪婪。参见演示。

https://regex101.com/r/vD5iH9/30

var re = /(.*?)(?:\n|$)/g;
var str = 'One\nTwo\n\nFour';
var m;

while ((m = re.exec(str)) != null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}