2012-02-10 17 views
7

Numaralar için düzenli ifade ifadem var (0-9) ve/veya eğik çizgi (/).Jscript regexp karakter sınıfında kaçış eğik çizgisi kaçıyor?

/^[0-9/]+$/i.test(value) 

Şimdi bu doğru olduğuna inandığımız, ancak javascript doğrulayıcı tutulması etmiyorsa: Şuna benzer

sözdizimi hatası, bu belirteç

sil "]" belirteç üzerinde Bunun, ayırıcı/sınırlayıcının / ve eclipse 'reenteks'in biteceğini' düşündüğü (ve bu nedenle ] beklenmedik olacağı) olduğunu düşünüyorum.

Biz şöyle / kaçan tarafından tutulması tatmin edebilir: Her iki sürüm benim için çalıştığını

/^[0-9\/]+$/i.test(value) 

Not. Bununla

Benim sorundur:

  • olarak bildiğim kadarıyla ben bu aralıkta özellikle eğik çizgi kaçış gerekyok. Durum spesifik olabilir (javascript için kullanılan sınırlayıcı olduğu gibi). ikisi de çalışıyor gibi görünse de doğru ve tüm :)

bilen var mı çünkü

  • , ben daha çok .. iyi çünkü farklı ortamlarda davranış 'doğru' sürümünü kullanın ve yapardım ben Yapmam mı gerekiyor? Kaçış mı, Çıkma?

  • +0

    Evet, rahatsız edici bir şekilde Notepad ++ 'nin sözdizimi vurgulaması da yanlış olur. – MikeM

    cevap

    8

    standart açıkça hariç bir karakter sınıfında çıkış kullanılmamış bir şey koyabilirsiniz diyor ... Bir aralıkta / kaçmaya söyledi herhangi saygın siteyi bulamadık, ama Eclipse-doğrulayıcı muhtemelen tamamen aptal değildir \, ] ve satır:

    RegularExpressionClassChar :: 
        RegularExpressionNonTerminator but not ] or \ 
        RegularExpressionBackslashSequence 
    
    RegularExpressionNonTerminator :: 
        SourceCharacter but not LineTerminator 
    

    (http://es5.github.com/#x7.8.5). /'dan kurtulmaya gerek yok. Diğer taraftan, kişisel olarak, daha az akıllı ayrıştırıcıları mutlu etmek için şüpheye düştüğüm zaman, her şeyden kaçardım.

    +0

    Güzel bir :). Ben gerçekten "Ecma Standard" ile hızlandırmak değilim, bu çoğu .js parsers için kullanılan standart mı? Ve bir şeyleri kırmadan kaçması gerekmeyen bir şeyden kaçabilir misin? – Nanne

    +0

    @Nanne: Evet, çoğu javascript satıcısı ecma standardına ayak uydurmaya çalışıyor. Herkes tam olarak doğru değil ama temel şeyler her yerde aynı şekilde çalışmalı. Ve evet, ek bir ters eğik çizgi ihmal edilmesinin güvenli olduğu zamanlarda bile zarar vermez. – georg