我的代码中必须有语法错误,但我看不到它。 fiddle here
var comma = ',,';
var stop = '.。';
var expression = '/[]+/';
expression = expression.substr(0,2) + comma + stop + expression.substr(2);
expression = new RegExp(expression,'g');
var res = "foo,吧。baz".split(expression);
for ( var n=0; n < res.length; n++ ) {
}
我期望res.length
为3,但它始终为1并返回完整字符串。我错过了什么?
答案 0 :(得分:2)
/
用作RegExp
字面值的分隔符。例如/[a-zA-Z]/g
/
构造函数时,不需要 RegExp
。例如new RegExp('[a-zA-Z]', 'g')
要解决此问题,请删除/
(并修改其余代码):
var expression = '[]+';
或者您可以直接传递RegExp文字:
var res = "foo,吧。baz".split(/[,,.。]+/g);
答案 1 :(得分:1)
当您创建正则表达式时,您使用的是:var expression = '/[]+/';
。 /
分隔符是在你声明这样的正则表达式时使用的:
var expression = /[]+/; // note: no quotes.
您正在使用new Regexp()
,因此字符串中不需要它们。删除它们给出了:
var comma = ',,';
var stop = '.。';
var expression = '[]+';
expression = expression.substr(0,1) + comma + stop + expression.substr(1);
expression = new RegExp(expression,'g');
var res = "foo,吧。baz".split(expression);
for ( var n=0; n < res.length; n++ ) {
var item = document.createElement('li');
item.innerHTML = res[n];
document.getElementById('list').appendChild( item );
}
您的期望是什么?见fiddle。我调整了字符串索引和循环索引,以便工作......
答案 2 :(得分:0)
答案 3 :(得分:0)
像这样工作:
var comma = ',,';
var stop = '.。';
var expression = '[]+';
expression = expression.substr(0,1) + comma + stop + expression.substr(1);
expression = new RegExp(expression,'g');
var res = "foo,吧。baz".split(expression);
for ( var n=0; n < res.length; n++ ) {
var item = document.createElement('li');
item.innerHTML = res[n];
document.getElementById('list').appendChild( item );
}