JS - 正则表达式将字符串拆分为子字符串

时间:2015-06-09 14:53:11

标签: javascript regex

我们假设我的字符串以7878开头,以0d0a0D0A结尾,例如:

var string = "78780d0101234567890123450016efe20d0a";
var string2 = "78780d0101234567890123450016efe20d0a78780d0103588990504943870016efe20d0a";
var string 3 = "78780d0101234567890123450016efe20d0a78780d0103588990504943870016efe20d0a78780d0101234567890123450016efe20d0a"

如何通过正则表达式将其拆分,使其成为如下数组:

['78780d0101234567890123450016efe20d0a']
['78780d0101234567890123450016efe20d0a','78780d0101234567890123450016efe20d0a']
['78780d0101234567890123450016efe20d0a','78780d0101234567890123450016efe20d0a','78780d0101234567890123450016efe20d0a']

1 个答案:

答案 0 :(得分:2)

您可以使用正向前瞻(?=7878)拆分字符串。正则表达式不会消耗任何字符,因此7878将成为字符串的一部分。

var rgx = /(?=7878)/;
console.log(string1.split(rgx));
console.log(string2.split(rgx));
console.log(string3.split(rgx));

另一种选择是在'7878'上拆分,然后取出除第一个之外的所有元素,并为每个元素添加'7878'。例如:

var arr = string3.split('7878').slice(1).map(function(str){
    return '7878' + str;
});
  

这有用但它也匹配不在0d0a结束的字符串。怎么样   我只能匹配以0d0a0D0A结尾的那些吗?

那么,您可以将String.match与普通正则表达式一起使用。

console.log(string3.match(/7878.*?0d0a/ig));