맨날 인터넷에되어있는 정규식만 퍼서 사용하다가, 직접 만들어야 할 경우가 생겨서 공부하면서 작성하였음
아래의 블로그에 잘 정리되어있고, 이내용들을 보고서 정규식을 작성함
처음엔 이해도안되고 짜증났는데, 하다보니 이해됨 역시
https://postitforhooney.tistory.com/entry/JavaRegex-%EC%9E%90%EB%B0%94-%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EA%B3%B5%EB%B6%80%ED%95%98%EA%B3%A0-%EC%98%88%EC%A0%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0
https://moonong.tistory.com/31
https://sas-study.tistory.com/101
https://yulsfamily.tistory.com/232
https://medium.com/depayse/java-%EC%A0%95%EA%B7%9C-%ED%91%9C%ED%98%84%EC%8B%9D-regular-expression-%EC%9D%98-%EC%9D%B4%ED%95%B4-31419561e4eb
정규식 테스트 https://regexper.com/
2022.06.17 정규식으로 특정 패턴의 문자열을 추출할때 사용, 정리해야함
: https://boilerplate.tistory.com/53
String regexProjectSlug = "^[a-zA-Z0-9\\-]{5,10}*$";
^ : 정규식 문자열 시작
$ : 정규식 문자열 종료
* : 앞문자가 없을수도 있고 무한정 많을 수도 있음
[] : 정규식을 넣을 곳
{} : 글자수 제한 ( {2,5} 2~5글자 , {8,} 8글자 이상 ,)
() : 소괄호 안의 문자를 하나의 문자로 인식
a-z : 영어 소문자
A-Z : 영어 대문자
0-9 : 숫자
가-힣 : 한글 ( ㄱ-힣)
| : 패턴 안에서 OR 연산 사용
\ : 확장문자로, 역슬래시 다음에 일반 문자가 오면 특수문자로 취급함,
역슬래쉬 다음에 특수문자가 오면 그 문자 자체를 의미함
\\- : 특수문자 -
\\_ : 특수문자 _
\\. : 특수문자 .
\s : 공백문자
\S : 공맥문자가 아닌 나머지 문자
\w : 알파벳이나 숫자
\W : 알파벳이나 숫자를 제외한 문자
\d : 숫자 [0-9]와 동일
\D : 숫자를 제외한 모든 문자
(?i) : 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않음
//한글 불가능영문,숫자,특수문자(-) 가능 varchar50
String regexProjectSlug = “^[a-zA-Z0-9\-]{1,50}$”;
//한글 불가능 , 영어대문자 숫자 가능, 10글자 이하 (10 글자 프로젝트 키는 대문자로 시작해야 하며, 1개 이상의 대문자 알파벳 숫자가 따라와야 합니다.)
String regexJiraSlug = “^([A-Z]{1})[A-Z0-9]{1,9}$”;
//한글 불가능, 특수문자 - _ . 가능 (maximum is 255 characters)
String regexGitlab = “^[a-zA-Z0-9-.]{1,255}$”;
String regexGitlab = “^[a-zA-Z0-9\-\\.]{1,255}$”;
//한글 가능, 특수문자 `,.-(){} 가능 varchar100
String regexJenkins = “^[a-zA-Z0-9가-힣\-\\(\)\,\.]{1,50}$”;
String regexJenkins = “^[a-zA-Z0-9가-힣-_(),.]{1,50}$”;
=======================================================================================================================================
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTestClass {
public static void main(String[]args) {
Matcher match;
//프로젝트 이름 : 한글 가능 5-50글자 varchar50
String regexProjectName;
//프로젝트 URL : 한글 불가능영문,숫자,특수문자(-) 가능 varchar50
String regexProjectSlug = "^[a-zA-Z0-9\\-]{1,50}$";
String projectSlug = "projectslug-aaa";
match = Pattern.compile(regexProjectSlug).matcher(projectSlug);
System.out.print(projectSlug);
System.out.println(" : "+match.find());
//JIRA 프로젝트 이름 : 한글 가능 (최대 80 문자.)
String regexJiraName;
//JIRA URL : 한글 불가능 , 영어대문자 숫자 가능, 10글자 이하 (10 글자 프로젝트 키는 대문자로 시작해야 하며, 1개 이상의 대문자 알파벳 숫자가 따라와야 합니다.)
String regexJiraSlug = "^([A-Z]{1})[A-Z0-9]{1,9}$";
String jiraSlug = "JIRAURL101";
match = Pattern.compile(regexJiraSlug).matcher(jiraSlug);
System.out.print(jiraSlug);
System.out.println(" : "+match.find());
//Gitlab 그룹 이름 : 한글 불가능, 특수문자 - _ . 가능 (maximum is 255 characters)
//Gitlab 그룹 URL : 한글 불가능, 특수문자 - _ . 가능 (maximum is 255 characters)
//Gitlab 프로젝트 이름 : 한글 불가능, 특수문자 - _ . 가능 (maximum is 255 characters)
//Gitlab 프로젝트 URL : 한글 불가능, 특수문자 - _ . 가능 (maximum is 255 characters)
String regexGitlab = "^([A-Za-z0-9]{1})[a-zA-Z0-9-_.\s]{0,253}$";
String gitlabName = " ";
String gitlabSlug = "GitLabSlug-_.";
String gitlabProjectName = "GitLabProjectName-_-...a aAA";
String gitlabProjectSlug = "GitLabProjectSlug-_-...ZZzz....";
match = Pattern.compile(regexGitlab).matcher(gitlabName);
System.out.print(gitlabName);
System.out.println(" : "+match.find());
match = Pattern.compile(regexGitlab).matcher(gitlabSlug);
System.out.print(gitlabSlug);
System.out.println(" : "+match.find());
match = Pattern.compile(regexGitlab).matcher(gitlabProjectName);
System.out.print(gitlabProjectName);
System.out.println(" : "+match.find());
match = Pattern.compile(regexGitlab).matcher(gitlabProjectSlug);
System.out.print(gitlabProjectSlug);
System.out.println(" : "+match.find());
//젠킨스 CI : 한글 가능, 특수문자 `,.-_(){} 가능 varchar100
//젠킨스 CI JOB : 한글 가능, 특수문자 `,.-_(){} 가능 varchar100
//젠킨스 CD : 한글 가능, 특수문자 가능 varchar100 -- CD는 툴에 접속을 하지 못해서 확인 못햇음
//젠킨스 CD JOB : varchar100 -- CD는 툴에 접속을 하지 못해서 확인 못햇음
//(다만 특수문자가 들어갈 시 호출 API 에서 오류 발생, API호출에서 사용할 수 있는 특수문자 -_().,)
//String regexJenkins = "^[a-zA-Z0-9가-힣\\-\\_\\(\\)\\,\\.]{1,100}$";
String regexJenkins = "^([A-Za-z0-9ㄱ-힣]{1})[a-zA-Z0-9ㄱ-힣-_(),.]{1,99}$";
String jenkinsName = "Jenkins-00-1";
String jenkinsJobName = "JenkinsJob-001";
match = Pattern.compile(regexJenkins).matcher(jenkinsName);
System.out.print(jenkinsName);
System.out.println(" : "+match.find());
match = Pattern.compile(regexJenkins).matcher(jenkinsJobName);
System.out.print(jenkinsJobName);
System.out.println(" : "+match.find());
String regexGitlabPath = "^([A-Za-z0-9]{1})([a-zA-Z0-9-_.]{0,253})([a-zA-Z0-9-_]{1})$";
String regexGitlabPathNumber = "[^0-9]+";
String gitPath = "a-";
System.out.println("#####################################");
match = Pattern.compile(regexGitlabPath).matcher(gitPath);
System.out.print(gitPath);
System.out.println(" gitPath : "+match.find());
match = Pattern.compile(regexGitlabPathNumber).matcher(gitPath);
System.out.print(gitPath);
System.out.println(" gitPath : "+match.find());
}
}
=======================================================================================================================================