2009-10-27 4 views
23

문자와 숫자 만 일치하는 정규 표현식을 만들려면 어떻게해야합니까? 각 단어 사이에 하나의 공백이하나요?문자, 숫자 및 각 단어 사이의 공백 만 일치시키는 데 사용할 수있는 정규식은 무엇입니까?

좋은 예 :

 
Amazing 

Hello World 

I am 500 years old 

나쁜 예 :

 
Hello world 

I am 500 years  old. 

I am Chuck Norris 
+0

한 번에 이러한 또는 하나의 단어처럼 여러 단어를 포함하는 행과 일치 하시겠습니까? 몇 가지 예를 들어 자세히 설명해 주시겠습니까? 정확하게 일치시키고 싶은 부분은 무엇입니까? – Jaskirat

+0

몇 가지 예를 추가했습니다. 죄송합니다. –

+0

왜 여러 공백을 허용하지 않아야합니까? 정말 중요하거나 정규식을 적용하기 전에 모든 공백을 단일 공백으로 자동 변환 할 수 있습니까? 아니면 그냥 학문적 운동입니까? –

답변

23

대부분의 정규식 구현은 문자 클래스 이름 지원 :

^[[:alnum:]]+([[:alnum:]]+)*$ 

당신은 그래도 좀 덜 명확를 영리하고이를 단순화 수 :

^([[:alnum:]]+ ?)*$ 

참고로, 두 번째는 마지막에 가짜 공백 문자를 수 문자열의. 그 첫 번째 정규식으로 그 막대기를 원하지 않는다면.

다른 포스터에서 말한 것처럼 [[:alnum:]]이 작동하지 않으면 [A-Za-z0-9]을 대신 사용할 수 있습니다.

+0

"?"을 추가하면 투표 할 수 있습니다. 라인/문자열 (그리고^$ 앵커 포인트)의 시작 부분에서 단일 공간을 처리하기 위해 시작 부분에. 다른 모든 것은 좋은 것처럼 보입니다. – paxdiablo

+0

작동하지 않는 것 같습니다 (ASP RegExp에서 필요합니다) –

+3

죄송합니다. 편집을 보았습니다.^([A-Za-z0-9] +?) * $ 정말 고마워요! –

-1

이 단어를 일치합니다

'[a-zA-Z0-9]+\ ?' 
+0

좋아요, 이제 그 핸들을 라인으로 만듭니다 :-) – paxdiablo

+0

아니요, 일부 단어와 일치합니다. (ascii) 범위를 포함하는 것은 a-z와 A-Z의 범위입니다. 'café'라는 단어는 일치하지 않습니다. '01012009'와 같은 자릿수로만 구성된 문자열과도 일치 할 것입니다. –

+0

이것은 질문에 대답하지 않습니다 –

7
([a-zA-Z0-9]+ ?)+? 
+0

그리고 줄의 시작 부분에 공백이 어떻게 처리됩니까? :-) – paxdiablo

2
^[a-zA-Z]+([\s][a-zA-Z]+)*$ 
6
^([a-zA-Z0-9]+\s?)*$ 

의 작품

+0

끝 부분에 뒤 공백이 있어도 일치합니다. –

관련 문제