2014-01-24 2 views
0

^<> % *() # !,을 (를) 제외한 모든 문자를 입력 필드에 허용하고 싶습니다. 이 때문에이 제약 조건을 사용하고 있습니다. 서버 측에 대한 클라이언트 측 유효성 검사정규식 패턴이 작동하지 않습니다

final String regexpattern = "/[^<>%*()#!?]/"; 

에 대한

final Pattern pat = Pattern.compile("/[^<>%*()#!?]/"); 

하지만 클라이언트 측에서

+0

나에게 보인다 정규식이 True의 반환 값이 입력이 무효 인 의미하며, 거짓이 입력이 유효 의미를 제외하고 작동합니다. – OGHaza

답변

0

작동하지 않습니다는 패턴해야

regexpattern = /^[^<>%*()#!?]*$/ 

서버

final Pattern pat = Pattern.compile("^[^<>%*()#!?]*$"); 
+0

또한'^ ^> 문자를 사용하지 않으려면'[^ <> % *() #!? ^]' – Robin

0

한 문자 만 사용하면 그 후에 "+"또는 "*"를 추가해야합니다.

0

문자열의 시작과 끝을 지정하기 위해 패턴에 ^$이 있어야합니다. 그렇지 않으면 문자열에 유효한 문자가 하나 이상 있는지, 문자열의 모든 문자가 유효하지 않은지 확인합니다.

또한 문자 집합에 대한 배율이 필요합니다. 그렇지 않으면 한 문자 길이의 문자열과 만 일치합니다. 0 개 이상의 문자를 허용하려면 *을 사용하고 하나 이상의 문자를 허용하려면 +을 사용하십시오. 범위를 사용할 수도 있습니다 (예 : {2,10}). 2 - 10자를 허용합니다.

집합의 시작 부분에있는 ^은 음수로 만들기 때문에 ^을 허용하지 않으려면 집합의 문자 중에서도 필요합니다.

슬래시는 정규식 리터럴의 구분 기호입니다. 어느 쪽이든 당신은 정규 표현식 개체를 만드는 데 사용할 수있는 문자열로 패턴을 쓰기 :

pattern = "^[^^<>%*()#!?]+$"; 

하거나 정규 표현식 객체가된다 리터럴 정규 표현식으로 쓰기 :

regex = /^[^^<>%*()#!?]+$/; 
-2

일부 문자는 정규 표현식에서 이스케이프해야합니다.

이 시도 :

final String regexpattern = /[\^<>%*()#!?]+/ ; 


final Pattern pat = Pattern.compile("[\^<>%*()#!?]+") ; 
+0

번을 사용해야합니다. 대괄호 안에있는 경우 특수 문자의 수는 적습니다 http://www.regular-expressions.info/charclass.html). – Robin

+0

추가 테스트가 끝나면 정확한 결과를 내기 위해 이스케이프가 필요한 바로 그 것이 었습니다. 다른 특수 문자를 이스케이프 처리하는 것은 불필요한 경우에도 여전히 작동합니다. – Beau

관련 문제