我们假设我的字符串以7878
开头,以0d0a
或0D0A
结尾,例如:
var string = "78780d0101234567890123450016efe20d0a";
var string2 = "78780d0101234567890123450016efe20d0a78780d0103588990504943870016efe20d0a";
var string 3 = "78780d0101234567890123450016efe20d0a78780d0103588990504943870016efe20d0a78780d0101234567890123450016efe20d0a"
如何通过正则表达式将其拆分,使其成为如下数组:
['78780d0101234567890123450016efe20d0a']
['78780d0101234567890123450016efe20d0a','78780d0101234567890123450016efe20d0a']
['78780d0101234567890123450016efe20d0a','78780d0101234567890123450016efe20d0a','78780d0101234567890123450016efe20d0a']
答案 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
结束的字符串。怎么样 我只能匹配以0d0a
或0D0A
结尾的那些吗?
那么,您可以将String.match
与普通正则表达式一起使用。
console.log(string3.match(/7878.*?0d0a/ig));