2017-04-12 6 views
0

글자, 숫자, 단일 공백, '-' 리터럴 및 '/' 리터럴 만 허용하는 정규식을 작성하려고합니다. 표현식을 이것들로 제한하려면 어떻게해야합니까?문자열의 중간과 끝에서 특수 문자를 제거하는 정규식

"This should be invalid because it ends with!!! these"을 입력하면 끝에 느낌표가 있지만 유효한 문자열로 반환됩니다.
내가 가진 하나는 완전히 정확하지 : 여기

[A-Z]|[a-z]|[0-9]|/|\s|- 
+0

안녕

console.log([ 'This should be invalid because it ends with!!! these', //=> false 'This is valid' //=> true ].map(/ /.test, /^[A-Za-z\d\s\/-]+$/ ))

, 나는 당신이 그것을 삭제할 때 액세스 타이머 질문에 대한 답을 마칠 막이었다. 더 이상 코드를 삭제하지 않아도됩니다. (내 작업 컴퓨터에서 게시했거나 내 PC에서 가져 오지 않았습니다.) – Andre

+0

삭제를 취소하는 방법을 모르겠습니다. @Andre – Tannavee

답변

1

문제는 기본적으로 정규 표현식은 전체 문자열과 일치하지 않는 것입니다. 한 캐릭터가 성냥을 구성하기에 충분합니다. 당신은 당신이 원하는대로 작동하도록 ^(?: ...)+$처럼 정규식을 둘러싸고해야합니다

console.log([ 
 
    'This should be invalid because it ends with!!! these', //=> false 
 
    'This is valid' //=> true 
 
].map(/ /.test, 
 
    /^(?:[A-Z]|[a-z]|[0-9]|\/|\s|-)+$/ 
 
))

그러나,보다 컴팩트 한 방법은 같은 표현이 ^[A-Za-z\d\s\/-]+$을 것이다 작성.

+0

안녕하세요, 이것은 나를 위해 일했습니다 :^(? : [AZ] | [az] | [0-9] | \/| \ s | -) + $' ? : [A-Za-z \ d \ s \/-]) + $', 올바른 결과를 반환하지 않지만 첫 번째는 완벽하게 작동합니다. :) – Tannavee

+0

당신을 위해 일해 ... 어떤 문자열을 실행하고 정규식의 어떤 맛을 사용하고 있습니까? – gyre

+0

파이썬 3.4에서 re 라이브러리를 사용하고 있습니다. 죄송합니다. 실행 중에 오류가 발생했습니다. 다시 시도하십시오. – Tannavee