I am seriously going crazy over this and I've already spent an unproportionate amount of time on trying to figure out what's going on here. So please give me a hand =)
I need to do some RegExp matching of strings in JavaScript. Unfortunately it behaves very strangely. This code:
var rx = /(cat|dog)/gi;
var w = new Array("I have a cat and a dog too.", "There once was a dog and a cat.", "I have a cat and a dog too.", "There once was a dog and a cat.","I have a cat and a dog too.", "There once was a dog and a cat.","I have a cat and a dog too.", "There once was a dog and a cat.","I have a cat and a dog too.", "There once was a dog and a cat.","I have a cat and a dog too.", "There once was a dog and a cat.","I have a cat and a dog too.", "There once was a dog and a cat.");
for (var i in w) {
var m = null;
m = rx.exec(w[i]);
if(m){
document.writeln("<pre>" + i + "
INPUT: " + w[i] + "
MATCHES: " + m.slice(1) + "</pre>");
}else{
document.writeln("<pre>" + i + "
'" + w[i] + "' FAILED.</pre>");
}
}
Returns "cat" and "dog" for the first two elements, as it should be, but then some exec()
-calls start returning null
. I don't understand why.
I posted a Fiddle here, where you can run and edit the code.
And so far I've tried this in Chrome and Firefox.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…