2011-09-19 5 views
0

나는 gif, jpegpng 년대에 보장하는 fileNames 작동 다음 regex정규식 파일 및 기호 제거?

/(\.|\/)(gif|jpe?g|png)$/i 

이 허용됩니다있다. 그러나 나는 또한 fileNames을 확인하고 내가이 작업을 수행 할 수있는 방법

[email protected]#$%^&*() 
  1. 같은 dangerous 문자가 포함되지 않도록하기 위해이 코드를 확장 할?
  2. 어떻게하면 ""로 대체 할 수 있습니까?
+0

좋은 소스를 정규 표현식을 학습 : 그러나, 당신은 또한 자바 스크립트를 지원하는 내다을 사용할 수 있습니다 [자바 스크립트 문자열의 http://www.regular-expressions.info/ –

+0

가능한 중복 제거하는 정규식 교체 해제 불법 문자] (http://stackoverflow.com/questions/3780696/javascript-string-replace-with-regex-to-strip-off-illegal-characters) –

답변

0

가능한 모든 위험한 문자를 모르는 대신 특정 문자 집합 만 허용하는 것이 좋습니다. 가능한 모든 위험한 문자를 모를 수도 있기 때문입니다. 그러나 당신이 원하는 모든 캐릭터를 알고 있습니다.

사용이 :

/^\w+(\.|\/)(gif|jpe?g|png)$/i 

이 파일 이름 만이 아닌 위험한 문자 (문자, 숫자 및 _)이 포함되도록합니다.

또한 허용되지 제거 할 수 있습니다 문자 : 원하지 않는 문자 중 어느 것도

/^[^[email protected]#\$%\^&\*\(\)]*$/ 
+0

어이 감사합니다 무리! 지금 테스트 할 것입니다 :) – Tom

+0

사실 그것은 대괄호로 작동합니까? '/ [^ \ w] + (\. | \ /) (gif | jpe? g | png) $/i' – Tom

+0

아니요, 시작 부분의'^ '는 문자열의 시작 부분과 일치합니다. '\ w'는 * 문자, 숫자 및 _ *를 의미합니다 (예 : [a-zA-Z_]). – arnaud576875

0

이 정규식은 일치합니다; 먼저 정규 표현식을 사용하여 올바른 확장자를 확인한 다음 각 문자에 old old indexOf을 입력하여 문자열에서 테스트합니다.

/^(?!.*[[email protected]#$%^&*()]).*(\.|\/)(gif|jpe?g|png)$/i 
0

가 실제로 별도로 이런 짓을 했을까 존재하지 않는 경우

name = name.replace(/[^\w.]+/g, '')