0
我想在一個字符串像不要在比賽
string = 'The value is ij35dss. The value is fsd53fdsfds.'
,我想是這樣string.match(/The value is (.*?)\./g);
只返回['ijdss','fsdfdsfds']
,而不是['The value is ijdss.', 'The value is fsdfdsfds.']
我想在一個字符串像不要在比賽
string = 'The value is ij35dss. The value is fsd53fdsfds.'
,我想是這樣string.match(/The value is (.*?)\./g);
只返回['ijdss','fsdfdsfds']
,而不是['The value is ijdss.', 'The value is fsdfdsfds.']
使用RegExp.exec
改爲運行正則表達式字符串,這裏是一個樣本:
var string = 'The value is ij35dss. The value is fsd53fdsfds.';
var re = new RegExp(/The value is (.*?)\./g)
var strs = []
var m = re.exec(string)
while(m != null) {
strs.push(m[1]);
m = re.exec(string)
}
alert(strs)
和的jsfiddle:
如果你認爲你會需要這個時候,你可以將它添加到String.prototype:
String.prototype.matchGroup = function(re, group) {
var m = re.exec(string);
var strs = [];
while(m != null) {
strs.push(m[group]);
m = re.exec(string);
}
return strs;
}
var string = 'The value is ij35dss. The value is fsd53fdsfds.';
alert(string.matchGroup(/The value is (.*?)\./g, 1));
的jsfiddle:
現金
是啊,這是一個有點hackish – ParoX 2012-02-22 02:24:29
見編輯 - 不過,我不明白爲什麼你認爲它是 「的hackish」。這是使用正則表達式的一種正常方式 - 您匹配,然後遍歷所有匹配並提取組,對我來說似乎很乾淨。 – 2012-02-22 02:35:03
@BHare,這不是黑客,只是寫得很差。可以做得更好,就像:http://jsfiddle.net/SutFc/ – Qtax 2012-02-22 05:59:52