与正则表达式匹配

时间:2013-12-24 08:26:00

标签: javascript regex match

我想使用匹配和正则表达式将字符串拆分为数组。

示例:

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"]

2 个答案:

答案 0 :(得分:3)

你可以使用类似的东西吗?

var strdoc = '<p>noi dung</p>tiêu đề bài viết đúng';
var arrdocobj = strdoc.match(/<[^>]+>|\S+?(?= |$|<)/g);

我正在考虑将\b与unicode标志一起使用,但我想它在JS中不可用,因此我使用(?= |$|<)来模拟单词边界。

jsfiddle demo

编辑:根据问题编辑:

<[^>]+>|[^ .,!?:<]+(?=[ .,!?:<]|$)|.

可能会成功。

jsfiddle demo

我刚添加了一些标点符号,|.用于匹配其余内容。

答案 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字母的