Wal*_*ari 2 javascript regex arrays split
我有一长串文本,我希望通过字符串"#","##"和"###"拆分成一个数组.
我可以这样做:
const text = "### foo ## foo # foo ### foo ## foo ### foo ### foo ### foo"
text.split(/#{1,3}/g)
Run Code Online (Sandbox Code Playgroud)
输出:
[ '',
' foo ',
' foo ',
' foo ',
' foo ',
' foo ',
' foo ',
' foo ',
' foo' ]
Run Code Online (Sandbox Code Playgroud)
然而,这删除了我仍然需要的主题标签.我也可以保留主题标签,但它们只是作为元素添加到数组中,这也是不可取的.
text.split(/(#{1,3})/g)
Run Code Online (Sandbox Code Playgroud)
输出:
[ '', '###', ' foo ', '##', ' foo ', '#', ' foo ', '###', ' foo ', '##', ' foo ', '###', ' foo ', '###', ' foo ', '###', ' foo' ]
Run Code Online (Sandbox Code Playgroud)
如何拆分文本,以便在标签后的数组元素中包含主题标签之后的文本?所以结果就是这样.
通缉结果:
[ '### foo ', '## foo ', '# foo ', '### foo ', '## foo ', '### foo ', '### foo ', '### foo' ]
Run Code Online (Sandbox Code Playgroud)
ctw*_*els 11
#{1,3}[^#]+
Run Code Online (Sandbox Code Playgroud)
将上述正则表达式与JavaScript match()函数一起使用
var str = "### foo ## foo # foo ### foo ## foo ### foo ### foo ### foo";
var matches = str.match(/#{1,3}[^#]+/g);
console.log(matches)Run Code Online (Sandbox Code Playgroud)
#{1,3}#字面上匹配数字符号的1到3之间(或任何你想称之为符号的字符)[^#]+ 匹配集合中不存在的任何字符中的1个或更多 #