我有一长串文字,我希望通过字符串分成数组"#"," ##"和" ###"。
我可以这样做:
const text = "### foo ## foo # foo ### foo ## foo ### foo ### foo ### foo"
text.split(/#{1,3}/g)
输出:
[ '',
' foo ',
' foo ',
' foo ',
' foo ',
' foo ',
' foo ',
' foo ',
' foo' ]
但是这会删除我仍然需要的主题标签。我也可以保留主题标签,但它们只是作为元素添加到数组中,这也是不可取的。
text.split(/(#{1,3})/g)
输出:
[ '', '###', ' foo ', '##', ' foo ', '#', ' foo ', '###', ' foo ', '##', ' foo ', '###', ' foo ', '###', ' foo ', '###', ' foo' ]
如何拆分文本,以便在标签后的数组元素中包含主题标签之后的文本?所以结果就是这样。
通缉结果:
[ '### foo ', '## foo ', '# foo ', '### foo ', '## foo ', '### foo ', '### foo ', '### foo' ]
答案 0 :(得分:11)
#{1,3}[^#]+
将上述正则表达式与JavaScript match()
函数
var str = "### foo ## foo # foo ### foo ## foo ### foo ### foo ### foo";
var matches = str.match(/#{1,3}[^#]+/g);
console.log(matches)
#{1,3}
在数字符号的1到3之间匹配(或者您想要称之为符号的任何内容)#
字符[^#]+
匹配集#