我想使用匹配和正则表达式将字符串拆分为数组。
示例:
var strdoc = '<p>noi dung</p>bài viết đúng.Đó thực sự là, cuối cùng';
var arrdocobj = strdoc.match(/(<.+?>)|(\s)|(\w+)(.+?)/g);
当我执行console.log arrdocobj
时,会产生
["<p>", "noi ", "dung<", "p>", "bà", "i ", "viế", "t ", "ng.", " ", "thự", "c ", "sự", " ", "là", " ", "cuố", "i ", "cù", "ng"]
如何将字符串拆分为这样的数组
["<p>", "noi"," ", "dung", "<p>","bài"," ","viết"," ","đúng",".","Đó"," ","thực"," ","sự"," ","là", "," ," ","cuối"," ","cùng"]
答案 0 :(得分:3)
你可以使用类似的东西吗?
var strdoc = '<p>noi dung</p>tiêu đề bài viết đúng';
var arrdocobj = strdoc.match(/<[^>]+>|\S+?(?= |$|<)/g);
我正在考虑将\b
与unicode标志一起使用,但我想它在JS中不可用,因此我使用(?= |$|<)
来模拟单词边界。
编辑:根据问题编辑:
<[^>]+>|[^ .,!?:<]+(?=[ .,!?:<]|$)|.
可能会成功。
我刚添加了一些标点符号,|.
用于匹配其余内容。
答案 1 :(得分:0)
我认为以下正则表达式会在您的编辑中执行您要求的内容:
var strdoc = '<p>noi dung</p>bài viết đúng.Đó thực sự là, cuối cùng';
var arrdocobj = strdoc.match(/<[^>]+>|[\s]+|[^\s<]+/g);
不幸的是,JavaScript不支持任何Unicode字母的