Categories
가이드

구글 설문 만들 때 유용한 정규식 모음

정규식 사용이 낯선 분들도 많겠지만, 일반적으로 정규식 지원 문서를 만질 때 뿐 아니라 구글 설문지 만들 때 잘 활용하면 나중에 일을 두 번 하지 않아도 되니까 배워두면 상당히 유용합니다.

예를 들어 설문지로 전화번호를 수집하다고 합시다. 그냥 단답형으로 써달라고 하면, 정말 괴상하게 생긴 … 여러가지 답안을 만나게 됩니다.

  • 01012341234
  • 010-1234-1234
  • 010.1234.1234
  • 82-10-1234-1234
  • 010 1234 1234

알아보기만 하면 되니까 상관 없을 수도 있는데, 만일 수백 명의 데이터를 수집하고 있다면 얘기가 다릅니다. 보기도 힘들고, 수정하기도 어지럽지요. 꼭 전화번호가 아니더라도 이런 비슷한 문제를 예방할 필요가 있습니다. 간단히 쓰라고 했는데 1000자 넘는 텍스트를 그냥 붙여넣기 한 사람, 중학교 이름을 쓰라고 했더니 ’00중학교’, ’00중’, ’00 중학교’ 등으로 답안지 시트를 어지럽히는 사람, 선생님 성함 넣으라고 했더니 ‘홍길동’, ‘홍길동 선생님’, ‘홍길동쌤’, ‘교사 홍길동’ 등등 … 정말이지 응답자는 생각보다 창의적이랍니다.

우리는 제발 규칙을 지켜달라고 부탁하지 말고, 최대한 규칙에 어긋난 답안이 자동으로 거부되도록 설문지를 만드는 전략을 취해야 합니다.

1. 드롭다운 응답 형식

형식에 어긋난 답안을 피하는 가장 쉬운 방법은 내가 답안을 미리 정해주고, 그중에서 고르도록 객관식으로 문항을 만드는 것이지요. 구글 설문에서 “드롭다운” 형식으로 설문 문항을 만들면 예쁘게 답안을 수집할 수 있습니다.

구글 설문 드롭다운 방식
△ 구글 설문 드롭다운 방식

숫자도 넓은 범위가 아니면 드롭다운 방식으로 받을 수 있습니다. “3학년 몇 반이니?”를 물을 때 그냥 단답형으로 열어두면 어떤 응답자는 꼭 “2”라고 적으면 될 걸 “02”라고 적어서 귀찮게 만듭니다. 따라서 1~6까지 객관식으로 주는 게 낫습니다.

△ 구글 설문 – 드롭다운 방식으로 숫자 입력 받기

2. 응답 확인 – 범위 한정하기

숫자가 너무 넓은 범위이면 드롭다운으로 만들기 어렵습니다. 1에서 25까지 범위인데, 25 개의 선택지를 펼쳐줄 순 없겠지요.

일단 이럴 땐 범위를 지정해서 적어도 숫자가 아닌 글자를 입력하는 사람이 없도록 하고, 내가 원하는 범위 안으로 응답을 한정합니다.

단답형 설문 문항에서 답안의 조건을 검사하기 위해서는 아래 그림의 (2) 메뉴를 열어, (3) “응답 확인”으로 들어가세요.

△ 구글 설문 – 응답 확인 조건 걸기

조건을 쉽게 걸 수 있습니다. 가령 숫자값으로 한정하고, 어떤 값보다 초과, 크거나 같음(이상), 미만, 작거나 같음(이하), 같음, 같지 않음, 사이값, 사이값 제외 등등으로 제한할 수 있어요. 가령 응답자가 1와 25 사이의 숫자로만 답하도록 제한하는 거죠.

이제 1에서 25 사이의 숫자만 허락했으므로, 한글로 답변하거나 아래와 같이 “500”을 입력하면 오류 메시지를 뱉어내면서 거부하게 됩니다.

그러나 여전히 “02”와 같은 입력이 걸러지지 않는데, 2=02로 처리되기 때문입니다.

또한 1.5와 같은 소수도 통과시킵니다. 1.5 값도 1에서 25 사이에 있는 숫자값이기 때문이지요.

설마 1.5라고 쓰는 사람이 없을 거라 생각할 수 있지만, 수천 명에서 단 한 명만 그런 사람이 있어도 나중에 중요한 데이터를 놓칠 위험이 생기는 거죠. 또한 02와 2는 다른 순서로 정렬됩니다. 결국 최종 데이터를 검토하고 정렬하는 데 시간이 또 들어가지요.

우리는 정수로만 적고, 앞에 0을 붙이지 말아라, 어떤 값 범위 사이에서 적어라, 띄어쓰기 금지다 등등… 더 많은 금지 규칙이 필요합니다.

3. 응답확인 – 정규식 활용하기

이제 정규식을 사용해서 더 자세히 응답 형식을 제한해보겠습니다. 응답 확인에서 “정규식”을 사용하여 응답을 확인합시다.

3.1. 학급 번호 정수 입력 정규식

가령 학급 번호가 1번에서 29번까지 있는데, 1~29 사이에서 앞에 0을 붙이지 않고 양의 정수로만 입력받기를 원한다고 할 때, 아래와 같은 정규식을 사용하면 됩니다.

^[1-9]{1}$|^[1-2]{1}[0-9]{1}$

^는 입력하는 내용의 처음 부분을, $는 입력의 맨 끝 부분을 뜻합니다. [1-9]는 1부터 9라는 숫자 아무 거나 가능하다는 뜻입니다. {1}는 한 자리로만 입력하라는 뜻입니다. | 는 “또는(OR)”을 뜻합니다.

따라서 위의 정규식은 한 자리 숫자는 1~9를 허용하고, 두 자리 숫자로 적을 때는 십의 자리에서 [1-2]와 같이 1 또는 2만 허용하고, 일의 자리에서는 [0-9], 즉 0부터 9까지를 모두 허용한다는 뜻입니다. 그러므로 1~9와 10~29까지를 허용합니다. 00 이라든가, 05와 같은 입력을 거부하게 되어 더 깔끔하게 답안이 들어옵니다.

구글 설문 : 1~29 사이의 정수 입력 정규식
△ 1~29 사이의 정수 입력 정규식

3.2. 한글 이름 정규식

한글 이름의 경우 그냥 단답형으로 받으면 성, 이름을 띄어쓰는 사람이 꼭 있어서 담당자를 힘들게 합니다. 이제 모든 한글 글자를 사용할 수 있도록 하되, 2~6자까지만을 허용하는 정규식으로 조건을 걸어줍시다. 어차피 우리 조직에 모든 사람이 네 글자를 넘어가지 않으면 (2,4) 등으로 수정해도 되겠지요.

^[가-힣]{2,6}$

^는 시작을, $는 끝을 표시합니다. [1-9]가 1부터 9라는 입력을 허용하듯이, [가-힣]은 ‘가’부터 ‘힣’까지의 모든 글자 하나를 허용한다는 뜻입니다. 즉, 모든 한글 글자를 뜻합니다. {2,6} 은 최소 두 자에서 여섯 자리까지 허용한다는 것이죠.

구글 설문 정규식 - 한글 이름 입력
△ 구글 설문 정규식 – 한글 이름 입력

[가-힣] 에는 띄어쓰기는 들어있지 않습니다. 이제 띄어쓰기를 하거나, 제한 글자수를 초과하는 입력을 사전에 막을 수 있게 되었습니다.

정규식 한글 이름 입력 오류 메시지
△ 정규식 한글 이름 입력 오류 메시지

3.3. 학교 이름 입력 정규식

좀 더 복잡한 경우를 생각해 보겠습니다. 출신 중학교 입력을 받아야 하는 상황이라면? 잠깐만 생각해도 골치가 아픈데요. 아마 “00중”, “00중학교”, “00 중학교” 등등.. 아주 난장판일 것 같지요.

관리하는 입장에서 “00중학교”의 형식을 꼭 지키라고 메모에 넣어도 어기는 사람은 반드시 나옵니다. 정규식으로 강제로 형식을 지켜 입력하도록 합시다.

어떤 조건이 필요할까요? 영어로 적는 건 싫으므로, 한글로 적되, 글자 수는 1-14 글자 범위에서 중학교 이름을 넉넉히 쓸 수 있는 공간을 주고, 뒷말은 “중학교”로 반드시 붙여쓰도록 하면 될 거 같네요.

^([가-힣]{1,14})+중학교$

[가-힣]{1,14}와 같이 적어서 중학교 이름을 띄어쓰기 없이 한 글자에서 14 글자 범위 안에서 적도록 합니다. 그리고 이 규칙을 괄호()를 사용해서 먼저 묶어주고, + 기호를 이용해 뒤에 이어지는 글자가 “중학교”로 반드시 끝나도록 요구합니다.

물론 중학교를 빼고 “경기중학교”이면 “경기”만 적어주세요~ 라고 한 다음에 나중에 관리자가 일괄적으로 중학교라는 글자를 붙여넣어도 되지만….그럼 반드시 .. “00중학교중학교”가 만들어질 겁니다. 사람들은 주의사항을 먼저 읽지 않아요…

아래와 같이 짧게 쓰거나, “중학교”로 끝나는 답안을 내지 않으면 “중학교”를 포함해서 전체 학교 이름을 적도록 유도하게 됩니다.

3.4. 전화번호 정규식

연락처를 받아봅시다. 01012341234와 같이 쓰는 사람, 심지어 821012341234 와 같이 쓰는 사람도 등장할 수 있습니다. 하이픈을 넣어달라고 했더니 빼기 기호(-)가 아니라 특수문자 긴 막대기를 넣거나 심지어 한글 모음 “ㅡ”를 넣기도 할 걸요? 모두 원하는 형식을 지키도록 합시다.

일단 휴대전화 010이 아니더라도 xxx-xxxx-xxxx 의 형식만 갖춰도 되면, 아래와 같이 쓰면 됩니다.

^\d{3}-\d{3,4}-\d{4}$

먼저 세 자리의 숫자를 쓰도록 \d{3}와 같이 씁니다. \d는 숫자(0~9)를 의미합니다. 그리고 그 뒤에 하이픈을 넣어주고, 그 다음엔 \d{3,4} 를 넣어, 세 자리 또는 네 자리의 숫자를 넣도록 하고, 이어서 \d{4}네 자리로 끝나도록 합니다.

위와 같이 쓰면 123-1234-1234 도 통과되고, 010-123-1234 도 통과될 겁니다.

구글 설문 정규식 - 전화번호
△ 구글 설문 정규식 – 전화번호

물론 반드시 010으로 시작하게 하고 싶다면, 아래와 같이 바꾸면 됩니다.

^010-\d{3,4}-\d{4}$
구글 설문 정규식 - 전화번호 입력 오류 메시지
△ 구글 설문 정규식 – 전화번호 입력 오류 메시지

하지만 010이 아닌 오래된 번호를 혹시 아직도 가지고 있을 수 있죠. 그리고 041 처럼 지역 번호는 제외하고 싶다면, 아래와 같이 적어서 010, 011, 016, 017, 018, 019만 맨 앞에 올 수 있게 정할 수 있습니다. | 는 “또는(OR)”을 의미합니다.

^01(0|1|6|7|8|9)-?\d{3,4}-?\d{4}$

02 등의 지역번호를 포함해 일반적은 xx-xxxx-xxxx 와 같은 전화번호 형식을 넓게 포함하려면, 아래와 같이 첫 자리에 2자리 또는 3자리 숫자를 허용해서 어떤 연락처든 적도록 하면 되겠고요.

^\d{2,3}-\d{3,4}-\d{4}$
구글 설문 - 전화번호 정규식
△ 구글 설문 – 전화번호 정규식
△ 구글 설문 정규식 – 첫 자리가 네 자리인 경우 거부하게 됩니다

4. 기타 구글 설문에 유용한 정규식 모음

4.1. 다섯자리 숫자 우편번호

띄어쓰기 없는 특정 자리수 숫자만 받고 싶을 때, 가령 우편번호처럼 00000~99999 를 받고 싶다면?

^\d(5)$

물론 이때 00000이라는 우편번호는 없기 때문에 범위를 좁혀주면 더 좋겠죠? 01000 (서울시 강북구)가 가장 빠른 번호이고, 63으로 시작하는 번호대를 사용하는 제주 서귀포시 이후로 64로 시작하는 우편번호는 없습니다. 따라서 적어도 아래와 같이 쓰면 오류가 줄어듭니다. 맨 앞자리에는 0~6을 허용하고, 그 다음 자리에는 0~3까지만 허용하고, 그 뒤에는 세 자리 숫자를 씁니다.

^[0-6][0-3]\d{3}$

4.2. 이메일 정규식

이메일에는 한글이 사용되지 않지요. 이메일 주소 형식을 갖추도록 하는 정규식은 널리 알려져 있습니다. 골뱅이 문자(@)는 반드시 들어갈테고, 뒷부분은 abc.com 등과 같이 마침표를 기준으로 앞뒤에 문자가 있을 겁니다.

^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$

4.3. 국내 집전화

0으로 시작하는 세 자리 지역번호가 앞에 나올 겁니다. 하지만 01~로 시작하는 지역번호는 없지요. 0[2-6][1-5]?와 같이 적어 바른 지역 번호 범위 안에서 숫자를 입력하게 합니다. 물음표가 붙은 마지막 [1-5]?는 1에서 5까지의 한 자리 숫자인데, 있어도 되고 없어도 된다는 뜻이에요. 그리고 이어지는 (\)|-)? 표시는 실제 괄호 기호) 또는 - 하이픈 둘 중에 하나를 입력하라는 뜻이고, 물음표가 붙었으니 안 써도 된다는 뜻입니다. 가운데 번호는 세 자리 또는 네 자리가 가능하지만 숫자 1로 시작하지는 않습니다. 등등~ 조건을 고려해서 말이 안 되는 전화번호를 거릅니다. 아래와 같이 쓰면 02-1234-1234 도 통과시키고, 02)1234-1234도 통과이며, 011234-1234도 통과입니다.

^0[2-6][1-5]?(\)|-)?[2-9]\d{2,3}-\d{4}$

오직 02-1234-1234 와 같은 하이픈 포함한 형식만을 허용하고 싶다면 아래와 같이 쓰면 되겠지요.

^0[2-6][1-5]?-[2-9]\d{2,3}-\d{4}$

4.4. 한글, 영어, 띄어쓰기 정규식

띄어쓰기를 포함해서 의견을 적되, 숫자나 영문자는 쓰지말고 우리말로 간단히 의견을 받고 싶다면 아래와 같이 쓰면 됩니다. ~ 까지의 모든 한글 글자와, 공백 문자(\s)까지를 허용하되, 글자 수를 한정하지는 않고 계속 이런 형식의 입력이 계속 반복되는 것을 허용(+)합니다.

^[가-힣\s]+$

영어 단어처럼 띄어쓰기 없이 영어 대소문자만 허용하고 싶을 때는?

^[a-zA-Z]+$

영어 문장으로 영어 대소문자와 띄어쓰기까지를 허용해서 받고 싶다면?

^[a-zA-Z\s]+$

또는 한글,영문 모두를 허용하되, 기호나 띄어쓰기는 금지하고 싶으면?

^[가-힣a-zA-Z]+$

영어 대소문자와 숫자까지 허용할 때는?

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

간단한 입력을 받을 때, 한글/영문/숫자 문자의 허용 범위와 띄어쓰기 포함 유무, 길이 조절까지 이해되실 겁니다.

4.5. 주민번호 받기

주민번호 형식은 가운데를 하이픈으로 구분하고 뒷부분의 시작 숫자는 1~4로 한정해서 답안 오류를 줄일 수 있습니다.

^(?:[0-9]{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[1,2][0-9]|3[0,1]))-[1-4][0-9]{6}$

4.6. 홈페이지 주소 정규식

홈페이지 주소를 입력받을 때, 어떤 사람은 example.com 이라고 적고, 어떤 사람은 http://example.com 이라고 적게 됩니다. 반드시 http:// 또는 https:// 로 반드시 시작하는 주소 전체를 써넣도록 해봅시다.

^((http(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$

http://까지 적으라고 하면 응답자 입장에선 짜증날 수도 있겠어요. http:// 또는 https://로 시작해도 되고, 안 써도 되지만 주소의 형식은 갖춰 http://example.com 또는 example.com 모두 통과시킬 수 있습니다. 아래와 같이 정규식을 넣으세요.

^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$

5. 참고 링크

(2020년 10월)

One reply on “구글 설문 만들 때 유용한 정규식 모음”

Leave a Reply

Your email address will not be published.