Javascript 按HTML实体分割字符串?

Javascript 按HTML实体分割字符串?,javascript,html,regex,Javascript,Html,Regex,我的字符串包含很多HTML实体,如下所示 ";大家好" 我想按HTML实体将其拆分为: 你好 每个人 那里 有人能给我建议一个方法吗?可能正在使用正则表达式?看起来您可以在和[^;]*上拆分正则表达式。也就是说,分隔符是以&开头,以结尾的字符串,在这两者之间可以是除以外的任何东西 如果一行中可以有多个分隔符,并且不希望它们之间有空字符串,只需使用(&[^;]*;)+(或者通常使用(delim)+模式) 如果您可以在字符串的开头或前面使用分隔符,并且不希望它们成为由它们引起的空字符

我的字符串包含很多HTML实体,如下所示

";大家好"

我想按HTML实体将其拆分为:

你好
每个人
那里


有人能给我建议一个方法吗?可能正在使用正则表达式?

看起来您可以在
和[^;]*上拆分正则表达式。也就是说,分隔符是以
&
开头,以
结尾的字符串,在这两者之间可以是除
以外的任何东西

如果一行中可以有多个分隔符,并且不希望它们之间有空字符串,只需使用
(&[^;]*;)+
(或者通常使用
delim
)+
模式)

如果您可以在字符串的开头或前面使用分隔符,并且不希望它们成为由它们引起的空字符串,那么只需在拆分之前将它们修剪掉即可


例子 下面是一个片段来演示上述想法():

var a=str.split(/\&[#a-z0-9]+\/)
应该可以做到这一点,尽管当两个实体相邻时,阵列中的插槽将为空

split(/&.*?;(?=[^&]|$)/)
并剪切最后和第一个结果:

["", "Hello", "everybody", "there", ""]
正则表达式是:
/(?:&[^;]+;)+/


将实体匹配为
&
,后跟1+非
字符,后跟一个
。然后至少匹配其中一个(或多个)作为拆分分隔符。使用
(?:表达式)
非捕获语法,以便捕获的分隔符不会放入结果数组(
split()
将捕获组放入结果数组,如果它们出现在模式中)。

请不要在标题中重复“[javascript]”之类的标记。这就是标签的用途!你也可以省去“你好”和“谢谢”。这是一个简单但很好的解决方案。但是,一个有效实体最多只能包含10个字符,包括符号和分号(我见过的最长实体是命名实体ϑ)。能否添加一个限制字符数的选项?@user:;像`/a{3,5}/`这样的模式将至少匹配3个字母,最多匹配5个字母
a
。因此,也许您想要的不是
+
(一个或多个),而是类似
{1,10}
。代码片段很好。我可以看到split函数有它自己的限制,即它不返回分隔符和被拆分的字符串。有一种变通方法可以将一组括号()添加到正则表达式中。但是这个解决方案在IE中不起作用。你对此有什么想法吗?@user:你可能需要类似的东西吗?我不知道你想要什么,这就是我要找的。我在IE 6、IE 8和FF 3上试过,效果很好。我真的非常感谢你和其他人对我的帮助:)
["", "Hello", "everybody", "there", ""]
>> ""Hello <everybody> there"".split(/(?:&[^;]+;)+/)
['', 'Hello', 'everybody', 'there', '']