2013-10-03 2 views
6

여기에서 RegEx 테스트는 무엇입니까?이 Javascript 문 (정규식)은 무엇을 의미합니까?

function chksql(){  
    if (/^\s*(?:delete|drop|truncate|alter)/.test(v)) return false;  
} 

나는 그것이 정규 표현식과 섞여 있다는 것을 알고 있지만 그것이 무엇을 의미하는지 알 수 없습니다. v가 또는 드롭 또는 잘라 내기 삭제 다음에 0 개 이상의 공백 charcters로 시작하는 문자열 또는 그렇게

v" alter" 있다면이 것을 변경할 경우

+0

상세 정보 [여기] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions) – aug

+0

이 작업을 수행 사이트를 링크하시기 바랍니다, 클라이언트 측에서이 똥을 검사하는 것이 일어날 때까지 대기하는 'drop table'입니다. – mkoryak

+0

아, 적어도이 코드는 조금 더 어렵게 만들 것입니다. 대신'DROP TABLE'을 써야 할 수도 있습니다! just_a_newbie, 내가 여기서 말하는 것은이 정규 표현식이 * 소문자 * 단어와 일치한다는 사실이지만 SQL 키워드는 대소 문자를 구별하지 않으며 실제로는 전통적으로 대문자로 작성됩니다. –

답변

2

요즘 정규 표현식을 테스트하고 살펴 보는 데 유용한 온라인 도구가 많이 있습니다.

내가 좋아하는 사람은 debuggex.com입니다. 다음은 정규 표현식에 대한 표시 내용은 다음과 같습니다

^\s*(?:delete|drop|truncate|alter) 

Regular expression visualization

Debuggex Demo

그 해석하려면, 당신은 아직도 무슨 뜻인지 ^\s을 찾는 등의 숙제를 조금 할 필요가 있지만, "철도 도표"는 정규 표현식이 테스트중인 것을 보여줍니다. 라인을 따라 가면서 어떤 라인이 일치하는지 확인하십시오. 위의 링크에서 테스트 문자열을 입력하여 일치하는지 (또는 일치하지 않는지) 확인할 수도 있습니다.

다른 좋은 사이트는 regex101.com입니다. 여기에 your regular expression there이 있습니다. 그들은 정규식이 무엇을 찾고 있는지에 대한 영어 설명을 제공합니다.

또한 클라이언트에서 SQL을 삭제하려고 시도하는 것에 대한 mkoryak의 충고를 참고하십시오! 정규 표현식에 대한

enter image description here

관련 문제