我正在尝试编写一个使用类似
的正则表达式/([;\.])|([\s\S]+)/gi
分开这个
a.b.cad0i2!--as.d;e;f;g00))(
进入这个
['a','.','b','.','cad0i2!--as','.','d',';','e',';','f',';','g00))(']
即。原始字符串中的所有内容都在最终数组中,输入正则表达式只列出了一组复杂的潜在分隔符,我不想重复正则表达式中的分隔符列表。
这可能吗?
答案 0 :(得分:1)
使用string.match
功能。
> "a.b.cad0i2!--as.d;e;f;g00))(".match(/[^;.]+|[;.]/g)
[ 'a',
'.',
'b',
'.',
'cad0i2!--as',
'.',
'd',
';',
'e',
';',
'f',
';',
'g00))(' ]
[^;.]+
匹配任何字符,但不匹配;
或.
一次或多次。
|
或,
[;.]
匹配;
或.
答案 1 :(得分:0)
试试这段代码:
var re = /(?=([.;])(?=[^.;]+))/gi;
var str = 'a.b.cad0i2!--as.d;e;f;g00))(';
var res = [];
var result = str.split(re);
for (var letter of result) {
res.push(letter.replace(/^[.;](?=.+)/, ''));
}
alert(res);

结果:
a,.,b,.,cad0i2!--as,.,d,;,e,;,f,;,g00))(