0
我有以下我的HTML頁面中的樣品標記:大括號,等號和JavaScript正則表達式
{#abc,def#}
使用JavaScript我需要從這些標記中提取文本,像這樣:
abc,def
我使用這個REG EXP:
/(({#).*(?=#})) /g
但兩組匹配:
group1: {#test, date group2: {#
如何更改它們以匹配正確的組?
我有以下我的HTML頁面中的樣品標記:大括號,等號和JavaScript正則表達式
{#abc,def#}
使用JavaScript我需要從這些標記中提取文本,像這樣:
abc,def
我使用這個REG EXP:
/(({#).*(?=#})) /g
但兩組匹配:
group1: {#test, date group2: {#
如何更改它們以匹配正確的組?
> '{#abc,def#}'.match(/{#(.*?)#}/)[1]
'abc,def'
UPDATE
> var xs = '{#abc,def#} foobar {#ghi,jkl#}'.match(/{#(.*?)(?=#})/g);
> for (var i = 0; i < xs.length; i++) xs[i] = xs[i].substr(2);
> xs
[ 'abc,def', 'ghi,jkl' ]
或者一個班輪:
var tokens = (str.match(/{#(.*?)(?=#})/g) || []).map(function(match)
{
return match.substr(2);
});
console.log(tokens);//[ 'abc,def', 'ghi,jkl' ]
如果要支持所有瀏覽器/的,則可能要增加數組proptotype:
if (!Array.prototype.map)
{
Array.prototype.map = function(callback)
{
if (typeof callback !== 'function')
{
throw new TypeError(callback + ' is not a function');
}
for(var i = 0;i<this.length;i++)
{
this[i] = callback(this[i]);
}
return this.slice();
};
}
這確實會失敗,如''{#abc,def#} foobar {#ghi,jkl#}' –
@EliasVanOotegem如何? –
@ m.buettner:在js中沒有多組匹配。他們需要使用exec/replace來捕獲它們。 – georg