2012-07-09 2 views
0

웹 응용 프로그램에서 사용자가 SELECT 문만 입력하도록합니다. 다음 정규식을 사용하여 항목의 유효성을 검사합니다.정규식 - 허용 입력 키 (java)

(^(?i)select.+)(\\w|\\W) 

위의 코드는 항목이 SELECT 시작해야합니다 확인합니다 다음 공백 (예 : TABLE1 SELECT * FROM) 그러나 쿼리를 작성하는 동안 사용자가 'ENTER'키가있을 때, 정규식이 실패합니다. 그래서 REGEX를 모두 'ENTER'키로하고 싶습니다. 누구든지 사용자가 텍스트 영역에서 'ENTER'키를 사용할 수 있도록 REGEX 구문을 알려주시겠습니까?

답변

3

Small aside : 도트가 줄 바꿈을 제외한 모든 문자와 일치하기 때문에 SELECT 뒤에 공백을 보장하는 코드가 없습니다.

그러나 이제 귀하의 질문에 답변 : 도트가 줄 바꿈과 일치하도록 허용하려면 (?s) 플래그가 필요합니다. 또한 \s 토큰을 사용하여 공백이 있는지 확인해야합니다.

"^(?is)select\\s.*" 

또는

"^(?i)select\\s" 

이이 있는지 확인하기 위해 이미 충분히 있기 때문에 :

그래서 나는이 제안 ... 너무, 모든 문자와 일치 - 후행 (\w|\W) 오히려 신비 문자열은 SELECT<space>으로 시작합니다.

+0

+1은'? s '입니다. '\ A'와'\ Z'로 앵커링하는 것도 효과가있는 것처럼 보였습니다. 그러나 이것은 훨씬 간단합니다. – Keppil

+0

@Keppil :'\ A'와'\ Z'는'(? m)'(multiline) 플래그가 설정되어 있지 않으면 각각'^'와'$'와 같은 의미입니다. –