我有一个字符串:
var string = "aaaaaa<br />† bbbb<br />‡ cccc"我想用分隔符<br />后跟一个特殊字符来拆分这个字符串。
为此,我使用以下代码:
string.split(/<br \/>&#?[a-zA-Z0-9]+;/g);我得到了我需要的东西,除了我丢失了分隔符。下面是示例:http://jsfiddle.net/JwrZ6/1/
如何保留分隔符?
发布于 2012-08-17 16:01:56
使用(positive) lookahead,以便正则表达式断言特殊字符存在,但实际上并不匹配它:
string.split(/<br \/>(?=&#?[a-zA-Z0-9]+;)/g);将其付诸实践:
var string = "aaaaaa<br />† bbbb<br />‡ cccc";
console.log(string.split(/<br \/>(?=&#?[a-zA-Z0-9]+;)/g));
发布于 2012-08-17 16:09:48
如果将分隔符放在括号中,它将是返回数组的一部分。
string.split(/(<br \/>&#?[a-zA-Z0-9]+);/g);
// returns ["aaaaaa", "<br />†", "bbbb", "<br />‡", "cccc"]根据您希望保留的部分,更改您匹配的子组
string.split(/(<br \/>)&#?[a-zA-Z0-9]+;/g);
// returns ["aaaaaa", "<br />", "bbbb", "<br />", "cccc"]您可以通过忽略字母string.split(/()&#?a-z0-9+;/gi)的大小写来改进表达式;
您可以像这样匹配预定义的组:\d等于[0-9],\w等于[a-zA-Z0-9_]。这意味着您的表达式可能如下所示。
string.split(/<br \/>(&#?[a-z\d]+;)/gi);有一个良好的Regular Expression Reference on JavaScriptKit。
发布于 2015-10-21 14:43:07
在这里也回答了JavaScript Split Regular Expression keep the delimiter
在正则表达式示例中使用(?=pattern)先行模式
var string = '500x500-11*90~1+1';
string = string.replace(/(?=[$-/:-?{-~!"^_`\[\]])/gi, ",");
string = string.split(",");这将为您提供以下结果。
[ '500x500', '-11', '*90', '~1', '+1' ]也可以直接拆分
string = string.split(/(?=[$-/:-?{-~!"^_`\[\]])/gi);给出相同的结果
[ '500x500', '-11', '*90', '~1', '+1' ]https://stackoverflow.com/questions/12001953
复制相似问题