2012-07-19 2 views
0

사용자 의견을 입력하는 방법은 의견 텍스트 필드에 있습니다.자바 정규 표현식 일치

public boolean isValidComment(String commentString) { 
    String expression = "[a-zA-Z0-9_ ]+"; 
    CharSequence inputStr = commentString; 
    Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE); 
    Matcher matcher = pattern.matcher(inputStr); 
    return matcher.matches(); 
} 

이 방법은 저에게는 효과적이지만 패턴을 변경해야합니다. 사용자는 <> {} [] 문자를 제외한 모든 문자를 입력 할 수 있어야합니다.

위의 항목을 제외한 모든 항목을 허용하도록 패턴을 설정하려면 어떻게해야합니까?

+0

봤어 야 했어! – user845279

+0

사용자가 원하는대로 주석 텍스트 필드에 입력 한 다음 데이터베이스에서 또는 웹 페이지에 코드를 배치하기 전에 코드가 사용자 텍스트를 안전하게 이스케이프 처리하는 것이 더 바람직 할 수 있습니다. 예를 들어 <를 <으로 이스케이프하면 웹 페이지에 안전하게 표시 할 수 있습니다. – Bobulous

답변

4

이 시도 : ahother 손에

[^\<\>\{\}\[\]]+ 

을, 당신은 피하기 위해 Pattern의 상수를 사용하는 식 때마다, 그런 일 다시 컴파일해야합니다

private static final Pattern MY_PATTERN = 
            Pattern.compile("^[^\\<\\>\\{\\}\\[\\]]+$"); 

그리고 상수를 사용합니다 :

return MY_PATTERN.matcher(commentString).matches(); 
4

[^characters to disallow].

^은 문자 클래스를 무효화합니다.

0

테스트하지 않은 형식은 다음과 같습니다. 문자열 표현식 = "[^\\\<\\\>\\\{\\\}\\\[\\\]]+" ^ 기호는 다음 문자 이외의 모든 문자를 나타냅니다.