我有一个字符串:
var string = "aaaaaa<br />† bbbb<br />‡ cccc"
我想用分隔符<br />拆分这个字符串,后面跟着一个特殊字符。
要做到这一点,我使用这个:
string.split(/<br \/>&#?[a-zA-Z0-9]+;/g);
我得到了我需要的东西,只是我丢失了分隔符。 示例如下:http://jsfiddle.net/JwrZ6/1/
如何保留分隔符?
我有一个字符串:
var string = "aaaaaa<br />† bbbb<br />‡ cccc"
我想用分隔符<br />拆分这个字符串,后面跟着一个特殊字符。
要做到这一点,我使用这个:
string.split(/<br \/>&#?[a-zA-Z0-9]+;/g);
我得到了我需要的东西,只是我丢失了分隔符。 示例如下:http://jsfiddle.net/JwrZ6/1/
如何保留分隔符?
当前回答
我知道这有点晚了,但你也可以使用搜索
Var string = "aaaaaa<br />†bbbb < br / >匕首;预备”; Var数组= string.split(/(?< = < br \ / >) /); console.log(数组);
其他回答
我知道这有点晚了,但你也可以使用搜索
Var string = "aaaaaa<br />†bbbb < br / >匕首;预备”; Var数组= string.split(/(?< = < br \ / >) /); console.log(数组);
使用(正)前向,这样正则表达式就断言特殊字符存在,但实际上并不匹配它:
string.split(/<br \/>(?=&#?[a-zA-Z0-9]+;)/g);
看看它的实际应用:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _bbbb < br / > ‡亿”; 游戏机log(管柱。斯普利特(/ < br \/>(?=&#?[ a-zA-Z0-9] +) / (g));
我遇到了类似但略有不同的问题。无论如何,这里有三种不同场景的示例,用于说明在何处保存分隔符。
"1、2、3".split("、") == ["1", "2", "3"]
"1、2、3".split(/(、)/g) == ["1", "、", "2", "、", "3"]
"1、2、3".split(/(?=、)/g) == ["1", "、2", "、3"]
"1、2、3".split(/(?!、)/g) == ["1、", "2、", "3"]
"1、2、3".split(/(.*?、)/g) == ["", "1、", "", "2、", "3"]
警告:第四个只适用于拆分单个字符。ConnorsFan提供了一个替代方案:
// Split a path, but keep the slashes that follow directories
var str = 'Animation/rawr/javascript.js';
var tokens = str.match(/[^\/]+\/?|\//g);
回答它这里也JavaScript分割正则表达式保持分隔符
在正则表达式中使用(?=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' ]
如果将分隔符括在parantheses中,它将是返回数组的一部分。
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);
JavaScriptKit上有一个很好的正则表达式参考。