2013-03-20 3 views
2

나는 ASP.NET 응용 프로그램에서 사용자 입력 문자열의 유효성을 검사하기 위해 정규 표현식을 사용해야하는 텍스트 상자가 있습니다. 정규 표현식의 요구 사항은 다음과 같습니다. -단어 사이에 공백 하나만 허용하는 정규 표현식

  1. 단어 사이에 하나의 공백 만 허용해야합니다. 즉, 단어 또는 문자 사이의 공백 수는 하나 여야합니다.
  2. 선행 공백과 후행 공백은 무시해야합니다.

일치 :

  • 테스트
  • 시험 ABC

비는 일치 :

  • 시험 ABC는 ABC DEF 테스트 -> 내가 포함하고 싶었다 두 번째 사이의 여러 공백 전자 2 단어. 그러나 편집자는 질문을 게시하는 동안 이러한 여분의 공백을 무시합니다.
+0

두 개의 서로 다른 해석은 명확하지 않다 제안? – MikeM

+0

더 명확하게 질문을 편집했습니다. 당신이 지적한대로 - 단어 사이에 둘 이상의 공백을 허용하지 않아도되므로 사용자 입력에 최대 두 단어까지 포함되도록 제한됩니다. –

답변

3

만 문자를 허용 할 경우 하나 또는 두 개의 '단어'(비 공백 문자의 즉 시퀀스)

"\s*\S+(\s\S+)?\s*" 

[A-Za-z]로 변경 \S이 있어야 가정.

+0

와우, "\ s * \ w + (\ s \ w +)? \ s *"라는 표현은 공백에 대해 훌륭하게 작동합니다. 내가 보는 유일한 문제는 문자열 내에 특수 문자를 허용하지 않는다는 것입니다. 특수 문자와 숫자도 허용해야합니다. –

+0

@Test_User. 공백이 아닌 문자를 허용하도록 편집되었습니다. – MikeM

+0

그것은 일한다, 고맙다 Mike !!! !!! ...모든 인풋과 도움을 주셔서 감사합니다! –

2

매우 간단합니다 :

/^ *(\w+ ?)+ *$/ 

바이올린 :

+0

죄송합니다. 작동하지 않았습니다. 공백이없는 문자열에 대해서도 유효성 검사 오류가 계속 발생합니다. –

+0

.NET RE 라이브러리를 사용하여 다시 조작하기 때문에 복사/붙여 넣기를 확인하십시오. – Adrian

+0

RegExr.com을 사용하여 나를 위해 작동하지 않습니다 –

0

http://refiddle.com/gls 어쩌면이 사람이 할 것인가?

\s*\S+?\s?\S*\s* 

편집 : 그것의 서버 인코딩 정규식, 당신이 그 탈출 슬래시 중 하나를 제거해야 할 수도 있음을 의미한다.

+0

죄송합니다, 나는 정규 표현식에 매우 열세입니다. RegEx 유효성 검사 컨트롤의 ValidationExpression 속성을 식으로 설정하면 한 단어와 일치하지 않습니다. 표현식을 수정하고 게시 할 수 있다면 감사하겠습니다. 고맙습니다! –

+0

내 게시물이 업데이트되었습니다. 다시 시도하십시오. – asenovm

0

방법에 대해 : - 허용 된 두 개 이상의 단어 당신의 키워드와 일치하는 부품의

^\s*(\w+\s)*\w+\s*$ 
관련 문제