2014-09-17 2 views
0

규칙을 준수하는 정규 표현식을 찾고 있습니다.Java 문자열 유효성 검사

허용 문자

알파벳 : A-Z A-Z 번호 : 나는 [^a-zA-Z0-9]를 사용하고 있지만 전화

regex = "[^a-zA-Z0-9]" ; 
String key = "message"; 
    if (!key.matches(regex)) 
       message = "Invalid key"; 

시스템이 잘못된 키를 보여줄 때, 키가 유효해야한다 0-9

. 저 좀 도와 주 시겠어요?

+1

정규식의 기능은 무엇입니까? 'String # matches'은 무엇을합니까? –

+0

'[^ chars]'는'[chars]'중 하나가 아닌 정확히 하나의 문자와 일치합니다. 또한'String # matches'는 정규 표현식이'^ regex $'인 것처럼 동작합니다. – Justin

답변

2

아래 정규식은 하나 개 이상의 영숫자 문자를 허용 것,

^[A-Za-z0-9]+$ 

귀하의 정규식 [^a-zA-Z0-9]는 단일 문자 아니지만 영숫자의 일치합니다. [^..]은 해당 문자 클래스 내에있는 문자의 부정을 수행하는 부정 문자 클래스라고합니다.

matches 메서드로 전달할 때 정규식에서 시작 또는 끝 앵커를 지정할 필요가 없습니다. 따라서 [A-Za-z0-9]+이면 충분합니다.

설명 : 시작을 의미

  • ^ 앵커.
  • [A-Za-z0-9]+, +은 앞의 토큰 [A-Za-z0-9]을 한 번 이상 반복합니다.
  • $ 줄의 끝.
+0

고마워, 잘 작동합니다. – jack

+0

알파벳과 숫자 옆에 공백을 넣고 싶다면,이 경우 올바른 정규식은 무엇입니까? – jack

+0

일부 예제 문자열을 게시하십시오. –

4

이러한 문자를 허용하려면 [a-zA-Z0-9]^을 사용하면 안됩니다. 이는 [] 내부의 내용을 무효화하기 때문입니다.

이 표현식 [^a-zA-Z0-9]이 아니며이 아니며 숫자가 0-9 인 것을 의미합니다.

정규식 구걸시 [] 외부에서 ^이 사용 된 것을 확인한 결과 구걸하는 문자열을 ^[a-zA-Z0-9]과 같이 나타낼 수 있습니다.

0

나는 연산자를 제거해야한다고 생각합니다. 같은 예제가 있는데 변수 이름 만 바꿉니다 :

invalidChars = "[^a-zA-Z0-9]" ; 
String key = "message"; 
if (key.matches(invalidChars)) { 
    message = "Invalid key"; 
} 

(단, 부정 논리는 읽기가 쉽지 않습니다.)

0

시도 Alphanumeric regex

"^[a-zA-Z0-9]$" 

^ 아래 시작 - 문자열

[A-ZA-Z0-9]의 - 여러 문자가

을 포함하는 $ - 문자열 끝

+0

' "(빈 문자열) 및 따라서 요구 사항을 충족하지 못하고 있습니까? – Dalorzo

+0

@Dalorzo 예 수정 됨 –

0

유효성 검사를 사용하면^A 대신 \ A \ z 앵커를 사용합니다.

\\A[a-zA-Z0-9]+\\z