Формат номера кредитной карты: «nnnn nnnn nnnn nnnn»
Я протестировал четыре строки ниже с этим шаблоном, но строка temp3 неожиданно возвращает true.
Я не знаю, чтонеправильно.Регулярное выражение, которое я использую, должно проверяться для четырех цифр и одного пробела точно, но temp3 возвращает true, несмотря на несоответствие этому шаблону.
String temp1 = " adfs 1111 2222 3333 4444 fadad"; // outer test
String temp2 = "11 11 2222 3333 4444"; // inner test
String temp3 = "11111 2222 3333 4444"; // inner test
String temp4 = "1111 2a222 3333 4444"; // inner test
public String chkContainCardno(String inputstr) {
Pattern p = Pattern.compile("[0-9]{4}\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4}");
Matcher m = p.matcher(inputstr);
if (m.find()) {
return m.group(0);
} else {
return ErrMsg.Does_Not_Contain_Card_No;
}
}
[Результат теста]
temp1: adfs 1111 2222 3333 4444 fadad
: true 1111 2222 3333 4444
temp2: 11 11 2222 3333 4444
: false
temp3: 11111 2222 3333 4444
: true 1111 2222 3333 4444
<- <strong>Я не понимаю
temp4: 1111 2a222 3333 4444
: false