정규표현식 - Sizuha/devdog GitHub Wiki
正規表現(せいきひょうげん、英: regular expression)
언어별 정규표현식 사용법
Java
public static void main(String args[]) {
//判定する文字列
String str = "123A5";
//判定するパターンを生成
Pattern p = Pattern.compile("^[0-9]*$");
Matcher m = p.matcher(str);
//画面表示
System.out.println(m.find());
}
C Sharp
class TestRegularExpressionValidation
{
static void Main()
{
string[] numbers =
{
"123-555-0190",
"444-234-22450",
"690-555-0178",
"146-893-232",
"146-555-0122",
"4007-555-0111",
"407-555-0111",
"407-2-5555",
};
string sPattern = "^\\d{3}-\\d{3}-\\d{4}$";
foreach (string s in numbers)
{
System.Console.Write("{0,14}", s);
if (System.Text.RegularExpressions.Regex.IsMatch(s, sPattern))
{
System.Console.WriteLine(" - valid");
}
else
{
System.Console.WriteLine(" - invalid");
}
}
// Keep the console window open in debug mode.
System.Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
}
}
/* Output:
123-555-0190 - valid
444-234-22450 - invalid
690-555-0178 - valid
146-893-232 - invalid
146-555-0122 - valid
4007-555-0111 - invalid
407-555-0111 - valid
407-2-5555 - invalid
*/
Samples
Java에서 사용하는 정규 표현식 문법 기준
E-mail 형식 검사
^(\\w+\\.)*\\w+@(\\w+\\.)+[A-Za-z]+$
Password
パスワードは以下をすべて使用して、8から48文字で入力する。
- 小文字の半角アルファベット
- 大文字の半角アルファベット
- 半角数字
- 記号(使用可能記号
!"#$%&'()*+,-./:;<=>?@[]^_`{|}~
)
^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!-/:-@[-`{-~])[!-~]{8,48}$
주민등록번호 검사
// Java
public static boolean juminCheck(final String serial1, final String serial2)
{
// 정규식을 이용해서 체크섬 이외의 대략적인 검사를 할 수 있다.
//
// 1. 년월일 날짜 부분 검사:
// 1 ~ 12월까지만 유효.
// 1 ~ 31일까지만 유효. (단 2월 30일 등의 표현은 검사 못함)
//
// 2. 성별 코드는 1 ~ 4만 유효.
//
// 3. 기본적인 자릿수 검사
//
final String src = serial1 + '-' + serial2;
final String regex = "\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])-[1-4]\\d{6}";
if (!Pattern.compile(regex).matcher(src).matches())
return false;
// 체크섬 검사
int[] a = new int[6];
for (int i = 0; i < 6; ++i) {
a[i] = serial1.charAt(i) - '0';
}
int[] b = new int[7];
for (int i = 0; i < 7; ++i) {
b[i] = serial2.charAt(i) - '0';
}
int check_digit =
a[0]*2 + a[1]*3 + a[2]*4 + a[3]*5 + a[4]*6 + a[5]*7 +
b[0]*8 + b[1]*9 + b[2]*2 + b[3]*3 + b[4]*4 + b[5]*5 ;
check_digit %= 11;
check_digit = (11 - check_digit) % 10;
return check_digit == b[6];
}