這似乎有點奢侈,但它適用於角色類以及角色。
(你會經常使用的indexOf如果它可以表示爲一個字符串。)
你曾經是能夠編輯正則表達式,但現在你需要一個新的有任何變化。
RegExp.prototype.extend= function(c){
var s= '', rx= this.toString();
rx= rx.replace(/(\W+)$/, c+'$1').replace(/^\/|\/$/g,'');
if(this.global) s+= 'g';
if(this.multiline) s+= 'm';
if(this.ignoreCase) s+= 'i';
return RegExp(rx, s);
}
String.prototype.longMatch= function(arr){
// if(this=='') return true;
var Rx= RegExp("^("+arr.shift()+")");
var i= 0, L= Math.min(s.length, arr.length),
M= this.match(Rx);
while(i< L){
if(!M) return false;
Rx= Rx.extend(arr[i++]);
M= this.match(Rx);
}
return M[0]==this;
}
var arr= ['A','B','C','D'];
var s= 'ABCD';// try various strings
alert(s.longMatch(arr));
你想以什麼方式擴展它? – Gumbo 2010-01-05 16:09:16
'C'不能以'A'開頭,否則'A'必須跟着'B'? – 2010-01-05 16:10:00
所以你想允許'ABCD'而不是'ACD'和'ABCDE'而不是'ACDE'? – Gumbo 2010-01-05 16:11:35