2023. 12. 20. 02:30ㆍC#
Regex(@"(010{1})\s*[-.]?([0-9]{3,4})\s*[-.]?([0-9]{4})");
(010{1}) : () 안의 010{1}을 그룹 1번, 이후에 Replace에서 사용할 $1으로 묶었다.
010{1}은 문자 010이라는 패턴이 1회 반복됨을 의미한다. 즉, 이 문자열은 무조건 010으로 시작해야 한다.
\s*[-.]? : \s (소문자 s)는 스페이스 바, 공백 문자를 의미한다.
* 는 앞에 지정한 문자가 0회 이상 반복됨을 의미한다.
[-.] 에서 [] 의 의미는, []안에 나열한 중 한 개를 의미한다. 즉 - 또는 . 이란 문자가 올 거란 의미다.
[]뒤에 붙은 ?는 ? 앞의 문자가 존재할 수도, 존재하지 않을 수도 있음을 의미한다.
즉, 0101234라는 문자열에서,
010-1234, 010 1234, 010.1234, 010 1234 같은 문자열을 맞는 문자열로 간주한다.
([0-9]{3,4}) : 0~9까지의 문자, 즉 숫자가 3개 혹은 4개 나열된 문자열을 $2 그룹으로 묶었다.
\s*[-.]? : 설명 생략
([0-9]{4}) : 숫자가 4개 나열된 문자열을 $3 그룹으로 묶었다.
Regex.Match("문자열") 을 통해서 전화번호가 맞는지를 체크한다.
위의 정규식을 통해서, 대충 010-####-#### 형식의 문자열이 온다면 Match Success 판정이 뜰 거다.
Regex.Replace("문자열", "$1-$2-$3");
그룹 $1 (010) 과 그룹 $2(1234), 그룹 $3(5678)을 각 그룹 사이에 - 를 넣은 문자열로 재구성한다.