답변:
캐릭터 클래스에 공백을 추가하십시오 .
^[a-zA-Z0-9_ ]*$
위의 내용이 정확하지 않습니다. 0 이상 을 *
의미 한다는 사실로 인해 다음과 같은 경우 모두 일치한다는 의미는 아닙니다.
원래 OP는 엄격 성이 중요하지 않은 것처럼 보이는 기본적인 질문을했기 때문에 그러한 세부 사항이 가치가 있다고 생각하지 않았습니다. 그러나 질문이 어느 정도 인기를 얻었으므로 말하고 싶습니다 ...
내 맛에서 (을 사용하지 않고 \w
) 다음과 같이 해석됩니다.
^[a-zA-Z0-9_]+( [a-zA-Z0-9_]+)*$
(@stema와 상관없이 upvote하십시오.)
이 (및 @stema의) 답변에 대해 알아야 할 사항 :
단어 사이에 여러 공백 을 허용 하려면 (예를 들어 실수로 두 번 공백을 허용하거나 PDF에서 복사하여 붙여 넣은 텍스트로 작업하는 경우) 공백 +
뒤에 다음을 추가하십시오 .
^\w+( +\w+)*$
탭과 줄 바꾸기 (공백 문자)를 허용하려면 공백을 다음으로 바꾸십시오 \s+
.
^\w+(\s+\w+)*$
여기가 제안 +
예를 들어, 윈도우 바꿈이 구성 때문에 기본적으로 두 시퀀스의 공백 문자, \r\n
당신이 필요합니다, 그래서는 +
모두를 잡을 수 있습니다.
사용중인 정규식의 방언을 확인하십시오. * Java와 같은 언어에서는 백 슬래시 ( 즉 \\w
, 및) 를 이스케이프해야합니다 \\s
. 세 이상의 기본 언어와 유틸리티,에서와 같은 sed
, \w
그리고 \s
정의되지 않은, 그래서 문자 클래스, 그들을 쓰는 예 [a-zA-Z0-9_]
와 [\f\n\p\r\t]
각각.
* 이 질문에 태그가 있다는 것을 알고 있습니다vb.net, 그러나 25,000 + 조회수를 기반으로, 나는이 질문을 겪는 사람들뿐만 아니라 추측합니다. 현재 Google에서 검색 구문, 정규 표현식 공백 단어를 처음으로 맞았습니다 .
한 가지 가능성은 acheong87이 제안한 것처럼 캐릭터 클래스에 공백을 추가하는 것입니다.이 패턴은 패턴이 얼마나 엄격한 지에 달려 있습니다. 이는 5 개의 공백으로 시작하는 문자열 또는 공백으로 만 구성된 문자열을 허용하기 때문입니다.
다른 가능성은 패턴을 정의하는 것입니다.
나는 \w
이것을 대부분의 정규식 풍미에서 사용 합니다 [a-zA-Z0-9_]
(일부에서는 유니 코드 기반입니다)
^\w+( \w+)*$
이렇게하면 일련의 단어가 하나 이상 허용되며 단어는 공백으로 나뉩니다.
^
문자열의 시작과 일치
\w+
일련의 최소 하나의 단어 문자와 일치
( \w+)*
0 번 이상 반복되는 그룹입니다. 그룹에서는 공백이 있고 일련의 단어 문자가 하나 이상 있어야합니다.
$
문자열의 끝과 일치
나는 당신이 앞 / 뒤 공간을 원하지 않는다고 가정합니다. 즉, 정규식을 "첫 번째 문자", "중간에있는 물건"및 "마지막 문자"로 분할해야합니다.
^[a-zA-Z0-9_][a-zA-Z0-9_ ]*[a-zA-Z0-9_]$
또는 perl과 같은 구문을 사용하는 경우 :
^\w[\w ]*\w$
또한 : 의도적으로 정규 표현식에 빈 문자열도 허용한다고 말하면 전체 항목을 선택 사항으로 만들어야합니다.
^(\w[\w ]*\w)?$
단일 공백 문자 만 허용하려면 약간 다르게 보입니다.
^((\w+ )*\w+)?$
이것은 0..n 단어 뒤에 하나의 공백과 공백이없는 단어를 더한 것과 일치합니다. 그리고 빈 문자열을 허용하기 위해 모든 것을 선택적으로 만듭니다.
\s
동일하지 않습니다. \s
단순한 공간 이상을 찾습니다.
이 정규식
^\w+(\s\w+)*$
단어 사이에 하나의 공백 만 허용하고 선행 또는 후행 공백은 허용하지 않습니다.
다음은 정규식에 대한 설명입니다.
^
문자열 시작시 어설 션 위치\w+
모든 단어 문자와 일치 [a-zA-Z0-9_]
+
가능한 한 여러 번 한 번과 무제한으로 [욕심 많은](\s\w+)*
*
가능한 많은 횟수로 0에서 무제한 사이에 [욕심 많은]\s
공백 문자와 일치 [\r\n\t\f ]
\w+
모든 단어 문자와 일치 [a-zA-Z0-9_]
+
가능한 한 여러 번 한 번과 무제한으로 [욕심 많은]$
문자열 끝에 어설 션 위치이것은 처음에 공간을 허용하지 않습니다. 그러나 단어 사이에 공백을 허용합니다. 단어 사이에 특수 문자를 사용할 수도 있습니다. FirstName 및 LastName 필드에 적합한 정규식입니다.
\w+.*$
알파벳 만 해당 :
^([a-zA-Z])+(\s)+[a-zA-Z]+$
영숫자 값 및 _
:
^(\w)+(\s)+\w+$
이 많은 답변을 잘 보았습니다 ...
... 그리고 스택 오버플로를 닦은 후 bupkis와 시작 또는 후행 공백이없고 엄격하게 알파 문자 단어 사이에 하나의 공백 이 있는 문자열과 일치하는 정규식에 대한 다른 사이트를 검색 한 후 bupkis .
^[a-zA-Z]+[(?<=\d\s]([a-zA-Z]+\s)*[a-zA-Z]+$
따라서 영숫자로 쉽게 수정됩니다.
^[a-zA-Z0-9]+[(?<=\d\s]([a-zA-Z0-9]+\s)*[a-zA-Z0-9]+$
(이것은 단일 단어와 일치하지 않지만 ^[a-zA-Z0-9]+$
단일 단어를 추가로 잡아야 하는 경우 스위치 / if와 다른 것을 간단한 것으로 사용하십시오.)
즐기십시오 : D
[(?<=\d\s]
일치 한 문자 : (
, ?
, <
, =
, 숫자, 또는 공백 문자, 그리고 당신이 무엇을 의미하는지가 될 수 없습니다. 만약 그것이 뒤돌아보기로되어 있다면, 그것은되어야 (?<=\d\s)
하지만 , 그것은 의미가 없습니다. 정규식은 절대 일치하지 않습니다.