Кажется, что недавно JSlint добавила опцию:Толерантность. и [^ ...] in/RegExp/
"Tolerate. and [^ ...] in/RegExp /".
Зачем использовать .
или ^
в регулярных выражениях?
Кажется, что недавно JSlint добавила опцию:Толерантность. и [^ ...] in/RegExp/
"Tolerate. and [^ ...] in/RegExp /".
Зачем использовать .
или ^
в регулярных выражениях?
Они соответствуют больше материала, чем можно было бы ожидать, что позволяет злоумышленникам запутать приложения. Эти формы не должны использоваться при проверке в защищенных приложениях.
Это, как представляется, на основе философии специфичен о том, что вы позволяете вместо того, чтобы позволить что-либо (в том числе мультибайтных и непечатных символов) с .
или позволяя ничего, кроме х, у и г (как [^…]
средства)
обоснованием этого является то, что некоторые люди не понимают, что
.
и[^...]
означают в регулярных выражениях, поэтому он вызывает их код либо принять что-то как действительное, если оно не является, или отклонить то, что действительно.
Использование '^' внутри классов символов кажется особенно понятным. –
Вы должны помнить, что JSLint очень * агрессивно относится к тому, что он рассматривает как плохую практику. Крокфорд в основном полагает, что если есть вероятность ввести ошибки с некоторыми языковыми функциями, это не должно допускаться. –
@TikhonJelvis: И что тогда? Вы должны избегать этого, даже если он находится внутри набора символов, или вы должны выбросить его на улицу и сделать некоторый '(\. | [Abc])' мусор? Я не вижу, как это может привести к ошибкам, если вы не знаете регулярных выражений и не смущены, поскольку это имеет значение, когда внутри набора ... но тогда вам просто нужно освежить свои регулярные выражения, это не проблема с линией скажите, что вы не знаете, о чем говорите. – mpen
@TikhonJelvis: с этой точки зрения, языки компьютера не должны быть разрешены вообще. И вообще никаких компьютеров. И никаких механизмов в этом отношении. И нет ... Какого черта, людей нельзя пустить! –