Kodum bir RegExp nesnesi (kontrolümün dışında) alır. Küresel değil ama buna ihtiyacım var. Şu anda Varolan bir RegExp'deki bayrakları değiştirmek mümkün mü?
Bunu yapmamın:if (!regex.global) {
var flags = 'g';
if (regex.ignoreCase) flags += 'i';
if (regex.multiline) flags += 'm';
if (regex.sticky ) flags += 'y';
regex = new RegExp(regex.source, flags);
}
... Başka bir yol anlamaya olamaz çünkü.
regex.global
no setter.regex.compile(new_pattern)
new RegExp(new_pattern)
regex.flags
lehine önerilmemektedir bir şey
Bunu yapmak için daha iyi bir yolu var mı değil mi?
bir regex iç yapısı böyle bir ayarlayıcı IMO pahalıya mal olacağını bunun (global regex Yineleyicinin) global veya değil olmadığına, örneğin, bağlı olduğu göz önüne alındığında (ve ne gerekir Bu durumu sıfırlayın?). Çözümün muhtemelen en iyisi. –
Bunu riske edip soruyorum - neden küresel olmak için ona ihtiyacınız var? –
@dystroy: Aslında bana sadece gelecek bir böcek kurtardınız. Yani, regex global ise o zaman, regex.lastIndex değerini 0 olarak değiştirmeyi hatırlamalıyım. Anlayabildiğim kadarıyla, g olmayan bir regex için durum ve yapışkanın uygulanmadığı durum (çoğunlukla hala durum) var -> örneğin: 'var r =/a /; var s = "ababa"; r.exec (s); r.exec (s); // r.lastIndex her zaman 0 ' –