2011-11-05 28 views
6

kodu: var foo = /\</;Neden jslint bir RegEx'deki <karakterinden çıktığımda şikayet ediyor?

ben jslint.com gidip şu şekilde girin alıyorum:

Problem at line 1 character 12: Unexpected '\'.

Beni Unexpected escaped character '<' in regular expression. ama zaman değişti anlatırdı.

Sadece merak ediyorum, neden? var foo = /\>/;'u denerseniz dikkat etmezse, < ile anlaşma nedir? Eğer bir iki basit div'leri varsa

+5

kaçmaya gerek yok: bu dillerde, sol açılı ayraç ve işareti karakterleri sarmak için bir varlık değiştirme veya CDATA bloğu kullanmak Orada "<" karakteri var. Ayrıca JSLint, Crockford'un rastgele görüşlerinin sadece kodlamasıdır. Bir otobüste garip bir ahbap olarak düşünün, kodunuz hakkında size şikayette bulunma. – Pointy

+0

Kaçmaya gerek olmadığını biliyorum, bu yüzden hata. Ama neden bu karakter özellikle ... gereksiz karakterler arasından kaçmak için, neden ''. – goatslacker

+0

Eminim ki bu uyarıyı kendi uygulamasına dahil etme kararının bir nedeni var. Nedeni "aptal ve kafa karıştırıcı" olsa bile. – goatslacker

cevap

3

, fark ortada:

<div> < </div> <!--Missing right angle bracket, bad markup--> 
<div> > </div> <!--No problem, just a greater than text node--> 

JSLint komut bağımsız dosya veya bir HTML belgesinin bir senaryo etiketi içinde olduğunu üstlenmez. Sol açılı ayraç bir etiketin başlangıç ​​gibi görünmesi için biçimlendirme dilleri böyle XUL, MXML, XAML, TVML, LZX, XHTML5 veya SVG olarak, komut dosyası etiketi içerik, yukarıdaki örnekte ilk div gibi muamele edilir.

<script> 
if (-1 &lt; 0 &amp;&amp; true !== false) {} 
</script> 

<script> 
<![CDATA[ 
if (-2 < 0 && true !== false) {} 
]]> 
</script> 

Referanslar

İlgili konular