2013-12-24 16 views
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)|(\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"] 

ответ

3

Вы могли бы, возможно, использовать что-то вроде того?

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

Я искал в использовании \b с флагом Юникода, но я предполагаю, что это не доступно в JS, так что я использовал (?= |$|<) эмулировать границу слова.

jsfiddle demo

EDIT: В соответствии с редактируют вопрос:

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

может сделать трюк.

jsfiddle demo.

Я только что добавил еще несколько пунктуаций и за оставшиеся вещи, чтобы соответствовать.

+0

Спасибо !!! потрясающе, он работает со мной – DucPT

+0

Я отредактировал вопрос, надеюсь, что вы все равно можете мне помочь :) – DucPT

+0

@ user1822688 Хм, вам нужны пробелы и знаки препинания? – Jerry

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); 

Unfortunatly JavaScript не поддерживает Unicode категории, как \ р {L} для любого Unicode Письмо

+0

Hic, спасибо, но он не разделяет пунктуацию :( – DucPT

Смежные вопросы