2011-12-14 5 views
4

JSlint가 최근에 옵션을 추가 한 것으로 보입니다 :. and [^ ...] in/RegExp/

"/ .../RegExp /에 허용됩니다."

. 또는 ^을 정규 표현식으로 사용하는 것이 나쁜 이유는 무엇입니까?

+0

JSLint는 나쁜 습관이라고 생각하는 것에 대해 매우 공격적이라는 것을 명심해야합니다. Crockford는 기본적으로 일부 언어 기능을 사용하여 버그를 도입 할 가능성이 있다면 허용해서는 안됩니다. –

+0

@TikhonJelvis : 그럼 뭐야? 캐릭터가 캐릭터 세트 안에있을 때라도 그것을 벗어나야 만한다. 그렇지 않으면 밖으로 던져서'(\. | [abc]) '쓰레기를 만들어야 하는가? 당신이 정규 표현식을 모르고 세트 안에있을 때 의미가 혼란스럽지 않으면 에러가 발생할 수있는 방법을 알지 못합니다.하지만 정규 표현식을 다듬을 필요가 있습니다. 당신이 무슨 말을하고 있는지 모른다고 말하십시오. – mpen

+1

@TikhonJelvis : 그 관점에서 보면 컴퓨터 언어는 전혀 허용되어서는 안됩니다. 그리고 일반적으로 컴퓨터가 없습니다. 그리고 그 문제에 대한 메커니즘이 없습니다. 그리고 아무 ... 도대체 뭐야, 인간은 허용되어서는 안된다! –

답변

5

the JSLint documentation에서 :

그들은 공격자가 응용 프로그램을 혼동 할 수 있도록 예상 할 수보다 더 많은 자료를 일치합니다. 이러한 양식은 보안 응용 프로그램에서 유효성을 검사 할 때 사용하면 안됩니다.

는 대신 .와 (멀티 바이트 및 비 인쇄 문자를 포함하여) 아무것도 허용하거나 제외하고는 아무것도 허용하는 허용 무엇인지에 대한 구체적인 존재의 철학을 기반으로 보인다 X, Y 및 Z ( [^…] 수단) the JSLint mailing list에서

:

이 뒤에 근거는 어떤 사람들은 .[^...] 정규 표현식에 무엇을 의미하는지 이해하지 않는다는 것입니다, 그래서 자신의 코드를 발생 그렇지 않은 경우 을 유효한 것으로 승인하거나 유효한 것을 거부하십시오.

+0

문자 클래스 내에서'^'의 사용은 특히 잘못 이해 된 것 같습니다. –