2016-09-08 2 views
0

정규식에 문제가있어 django 모델에서 파일 이름은 letter 또는 numer로 시작해야하며 나머지 작업에는 문자, 숫자 및 두 개의 특수 기호 caortains가 포함될 수 있습니다. 내 코드 같이 보인다 :정규식 모델의 django

file_validator = validators.RegexValidator(
regex='^[a-zA-Z0-9]*[a-zA-Z0-9\_\-]*$', 
message=(u'Name must start from letter or number, it can contains big and small letters, numbers and special signs: - _'), 
code='invalid_file', 
) 

하지만 파일 이름을 쓸 때 나는 내 프로젝트에서 테스트하면 "마이크"오류 메시지가 있습니다. 내가 뭘 잘못 했니?

+0

오류 메시지가 – Sayse

+1

인 것을 잊어 버렸습니다. '파일 이름은 문자 또는 숫자로 시작해야합니다.'-> ''[^ [a-zA-Z0-9] + [a- zA-Z0-9 _-] * $ '' –

+0

사실,'r'^ [[z-Z0-9] [\ w -] * $ ''이면 충분합니다. –

답변

0

내가 방금 0 개 이상의 발생을 의미 처음 * 정량을 삭제해야합니다, 당신은 Avinash suggests+ 필요하지 않습니다 생각합니다. 0 번을 허용하므로 은 문자 또는 숫자으로 시작해야합니다. 규칙이 작동하지 않습니다.

는 사용

r'^[a-zA-Z0-9][\w-]*$' 

regex demo

패턴이 사항을 참조하십시오 :

  • ^ - 문자열의 시작
  • [a-zA-Z0-9] - 아스키 문자 또는 숫자의 1 발생
  • ,
  • [\w-]* - 0+ 숫자, 문자,
  • $까지 _ 또는 - sybmols - 문자열의 끝.

re.UNICODE 플래그가 사용되지 않았기 때문에 \w은이 경우 ASCII 문자와 숫자와 일치합니다.

는 또한 나중에 클래스에 더 많은 문자를 추가하려는 경우 문자 클래스의 끝에서 -하지만를 이스케이프 할 필요는 없습니다, 탈출 유지하는 것이 좋습니다.