Javascript和正则表达式:拆分并保留分隔符
我有一个正则表达式,它可以将字符串拆分为数组 除了我想保留分隔符的一部分之外,任何东西都可以正常工作 这是我的正则表达式:Javascript和正则表达式:拆分并保留分隔符,javascript,regex,delimiter,Javascript,Regex,Delimiter,我有一个正则表达式,它可以将字符串拆分为数组 除了我想保留分隔符的一部分之外,任何东西都可以正常工作 这是我的正则表达式: (&#?[a-zA-Z0-9]+;)[\s] 在Javascript中,我正在做: var test = paragraph.split(/(&#?[a-zA-Z0-9]+;)[\s]/g); 我的段落如下: Current addresses: † Biopharmaceutical Research and Develo
(&#?[a-zA-Z0-9]+;)[\s]
在Javascript中,我正在做:
var test = paragraph.split(/(&#?[a-zA-Z0-9]+;)[\s]/g);
我的段落如下:
Current addresses: † Biopharmaceutical Research and Development<br />
‡ Clovis Oncology<br />
§ Pisces Molecular <br />
|| School of Biological Sciences
¶ Department of Chemistry<br />
当前地址:&dagger;生物制药研发
&匕首;克洛维斯肿瘤学
&教派;双鱼座
||生物科学学院
&段落;化学系
问题是我在数组中得到了10个元素,而不是我应该得到的5个。事实上,我也将分隔符作为一个元素,我的目标是将分隔符与拆分的元素保持在一起,而不是创建一个新的分隔符
非常感谢你的帮助
编辑:
因此,我希望得到以下结果:
1. † Biopharmaceutical Research and Development<br />
2. ‡ Clovis Oncology<br />
3. § § Pisces Molecular <br />
|| School of Biological Sciences
4. ¶ Department of Chemistry<br />
1&匕首;生物制药研发
2. &匕首;克洛维斯肿瘤学
3. &教派&门派双鱼座
||生物科学学院
4. &对位;化学系
正如我在评论中所说的,这个解决方案(顺便说一句,未经测试)只有在您只管理
元素时才有效。在这里:
var text = paragraph.split("<br />"); // now text contains just the text on each line
for(var i = 0; i<text.length-1; i++) { // don't want to add an line break to our last line
text[i] += " <br />"; // replace the <br /> elements on each line
}
var text=段落分割(“
”);//现在文本只包含每行上的文本
对于(var i=0;i尝试使用match
:
var test = paragraph.match(/&#?[a-zA-Z0-9]+;\s[^&]*/g);
更新:添加了所需的空白\s
匹配项
说明:
?
匹配&
和可选的
(问号匹配前一个或零次)
[a-zA-Z0-9]
是所有大小写字符和数字的范围。如果您也接受下划线,则可以将其替换为\w
+
符号意味着它应该匹配最后一个模式一次或多次,因此它匹配一个或多个字符a-z、a-z和数字0-9
;
与字符;
匹配
\s
与类空格匹配。该类空格包括空格、制表符和其他空格字符
[^&]*
再次表示一个范围,但由于^
是第一个字符,因此匹配将被否定,因此它不匹配&
-字符,而是匹配除&
之外的所有字符。星形匹配模式零次或多次
g
最后,在最后一个/
之后表示全局
,并使匹配在第一次匹配后继续,并获得所有匹配的数组
因此,匹配&
和一个可选的#
,后跟任意数量的字母或数字(但至少一个),后跟;
,后跟一个空格,后跟零个或多个非&
的字符。使用正则表达式非常简单:
var result = input.match(/&#?[^\W_]+;\s[^&]*/g);
测试一下。@ElliotBonneville:在哪里?我找不到解决方案。哦,对不起,我没有看到它是一个链接。你想创建一个链接吗?我已经发布了那篇文章,但我无法得到我问题的答案。谢谢,但我想你误解了我的问题。我知道如何用一个特殊字符作为分隔符分割我的。我们可以忘记
。我只知道需要将字符串拆分为以特殊字符开头的元素,并保留元素中的特殊字符。我很担心,因为我没有太多时间回答这个问题。非常感谢。如果可能,我还可以检查特殊字符后面是否有空格作为分隔符。@Milos是否需要空格(0x20)或者任何空白(空格、制表符、换行符、换行符和其他unicode空格)?太好了,非常感谢,这正是我所需要的。如果可能的话,请你给我解释一下你给我的正则表达式是如何工作的。我知道,对不起,我在浪费你的时间,但我想了解它,而不仅仅是复制粘贴。:)@米洛斯很好,你想了解它!如果有什么不清楚,告诉我。@Milos没问题!顺便说一句,您可以使用来玩regexp,并实时查看它与什么匹配。