728x90
JS
function solution(s) {
let pattern = /\d+/;
if (s.match(pattern)===null) return false
let l = s.match(pattern)[0].length;
if (l === s.length) {
if (l === 4 || l === 6 ) {
return true
} else return false
} else return false
}
function solution(s) {
let regex = /^\d{6}$|^\d{4}$/;
return regex.test(s);
}
아래 파이썬 솔루션과 비슷하지만 다른점은 ^와 $를 사용해서 문자열의 처음과 끝을 지정하는 방식인데,
JS 에서는 regex 표현을 ^와 &를 둘다 사용해야 한다는 점.
python
import re
def solution(s):
l = re.sub('\D',"", s) # regex, replace string, string to change
# non-numeric element is reduced to "".
# s = a1234 ==> s = 1234
if len(l) == 0: # s is all the string
return False
else:
if len(l) == len(s):
if (len(l) == 4) | (len(l) == 6) :
return True
else:
return False
else:
return False
[자주 사용하는 문자 클래스] 출처: wikidocs.net/4308
[0-9] 또는 [a-zA-Z] 등은 무척 자주 사용하는 정규 표현식이다. 이렇게 자주 사용하는 정규식은 별도의 표기법으로 표현할 수 있다. 다음을 기억해 두자.
- \d - 숫자와 매치, [0-9]와 동일한 표현식이다.
- \D - 숫자가 아닌 것과 매치, [^0-9]와 동일한 표현식이다.
- \s - whitespace 문자와 매치, [ \t\n\r\f\v]와 동일한 표현식이다. 맨 앞의 빈 칸은 공백문자(space)를 의미한다.
- \S - whitespace 문자가 아닌 것과 매치, [^ \t\n\r\f\v]와 동일한 표현식이다.
- \w - 문자+숫자(alphanumeric)와 매치, [a-zA-Z0-9_]와 동일한 표현식이다.
- \W - 문자+숫자(alphanumeric)가 아닌 문자와 매치, [^a-zA-Z0-9_]와 동일한 표현식이다.
대문자로 사용된 것은 소문자의 반대임을 추측할 수 있다.
Other solution by Python
def alpha_string46(s):
import re
return bool(re.match("^(\d{4}|\d{6})$", s))
^와 $는 문자열의 처음과 끝을 의미. \d는 숫자를 의미, {4}|{6}은 숫자가 4번 혹은 6번 반복되는 것을 찾는 거구요, 결과를 bool로 true/false로 리턴하게 하는 코드
728x90
'Algorithm' 카테고리의 다른 글
[프로그래머스] 124 나라의 숫자 (0) | 2021.03.02 |
---|---|
[프로그래머스] 서울에서 김서방 찾기 (JS, Python) (0) | 2021.02.04 |
[프로그래머스] 문자열 내림차순으로 배치하기 (JS, Python) (0) | 2021.01.29 |
Javascript Regex flag (0) | 2021.01.29 |
[프로그래머스] 문자열 내 p와 y의 개수 (JS, Python) (0) | 2021.01.29 |
댓글