鉴于此Javascript:
String.method('deentityify', function () {
// The entity table. It maps entity names to
// characters.
var entity = {
quot: '"',
lt: '<',
gt: '>'
};
// Return the deentityify method
return function () {
return this.replace(/&([^&;]+);/g,
function (a, b) {
var r = entity[b];
return typeof r === 'string' ? r : a;
}
);
};
}());
document.writeln('<">'.deentityify());
作为a和b的最后一个函数是什么?为什么?
我知道我们正在将我传入的字符串拆分为3组,但我不明白为什么<
会进入a,为什么只有lt
进入b
答案 0 :(得分:2)
第一个参数包含整个匹配,所有连续参数都是匹配的组。最后两个参数是偏移量和完整输入字符串。
var input = '<">'
input.replace( /&([^&;]+);/g, function (a, b)
该模式匹配&
+每non-&
+ ;
的所有出现次数。
a b
< lt
" quot
> gt