Почему jslint жалуется, когда я экранирую символ <в RegEx? - PullRequest
6 голосов
/ 05 ноября 2011

код: var foo = /\</;

Когда я захожу на jslint.com и ввожу это, я получаю:

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

Раньше мне говорили Unexpected escaped character '<' in regular expression., но времена изменились.

Так что мне просто любопытно, почему? Если вы попробуете var foo = /\>/;, то все равно, что за дело с <?

1 Ответ

3 голосов
/ 27 марта 2012

Если у вас есть два простых деления, разница очевидна:

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

JSLint не предполагает, что скрипт является автономным файлом или находится внутри тега скрипта HTML-документа. В таких языках разметки, как XUL , MXML , XAML , TVML , LZX , XHTML5 или SVG , содержимое тега сценария обрабатывается как первый div в приведенном выше примере, поэтому левая угловая скобка будет выглядеть как начало тега. В этих языках используйте замену объекта или блок CDATA, чтобы обернуть левую угловую скобку и символы амперсанда:

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

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

Ссылки

...