Düzenleme kuralımı javascript'te test ederken sürekli olarak garip bir sonuç elde ediyorum. http://jsfiddle.net/s5fYf/15/Javascript Regex .test() 'i geçmeli, ancak başarısız görünüyor - neden?
Bu Oluşturduğum bir web projesinden alınır:
İşte benim keman var. Doğrulama işlevlerimin içine, her kuralı değere göre doğrulayan bir doğrulama nesnesini geçiriyorum. Biri yanlışsa, döngüyü durdurmalı ve bir iletiyi ve başarısız kuraldan cssClass'ı alan bir döndürme nesnesini döndürmelidir.
Sorun, normal ifadenin imkansız olması durumunda bile doğrulama yönteminin yanlış döndüğü görülüyor! Yani bir şey anahtarını kaçırmış gibi hissediyorum. Hata ayıklama çıktısından çıktı ifadesini döndürdüğünüzü görebiliyorsunuz, ancak kodda test edildiğinde açıkçası başarısız oluyor. Bu, projemde gördüğüm şeyle aynıdır, burada hata ayıklama çıktısını çıkarırsam geri dönüş değeri temel olarak doğru ile yanlış arasında geçiş yapar.
Temel olarak /regex/.test(value)
işlevi, tutarlı olan ama beklediğim gibi değil, doğru ve yanlış arasında salınım yapıyor gibi görünüyor ... Bu yüzden, bu tuhaf davranışa neden olan sorudur !?
Düzenli ifademi çözümün dışında test ettim ve görebildiğim kadarıyla çalışıyor.
GÜNCELLEME: benim regex gelen 'g' veya global bayrağını belirtilmemesi
bu sorunu çözdü.
Why RegExp with global flag in Javascript give wrong results?
Güncel bilgiler: http://jsfiddle.net/Ym2hW/2/ Artık test() ve dönüş değeri arasında tutarlılık elde ediyorum. Fakat eğer bulanıklığı birden çok kez tetiklerseniz, aynı salınımları elde edersiniz. – Jon
Tamam, konu küresel bayrakla ilgili, benim güncellememi yukarıda gör. – Jon
Teşekkür ederiz! Global bayrağı 'g' global ifademi kullandığımda depolanan 'test()' sonucu sorunu giderildi. Küresel bayrak ile ek regex'in yaklaşık% 20'si.test() çağrıları geçerli olduklarında başarısız oldu. –