Вы можете использовать класс Pattern из java и использовать его метод matches
, который принимает два аргумента, первый из которых - это упомянутое вами регулярное выражение, а второй - строку, и он возвращает значение boolean
который покажет, соответствует ли строка регулярному выражению или нет. Вот пример кода для того же,
String input = "somedata";
Pattern.matches("^(?!000|666)[0-8][0-9]{2}-(?!00)[0-9]{2}-(?!0000)[0-9]{4}$", input);
Ваш метод должен выглядеть примерно так:
public void setSocNum(String x) {
if (Pattern.matches("^(?!000|666)[0-8][0-9]{2}-(?!00)[0-9]{2}-(?!0000)[0-9]{4}$", x)) {
System.out.println("please enter a valid social security number");
}
// further logic goes here
}
Создание объекта Pattern
тяжело, поэтому, если вы намереваетесь использовать код, для которого он вызывается много раз, вы должны создать его один раз и использовать повторно, избегая повторного создания его снова и снова.
Вот объяснение регулярного выражения:
^(?!000|666)[0-8][0-9]{2}-(?!00)[0-9]{2}-(?!0000)[0-9]{4}$
^
- начало строки
(?!000|666)
- Это отрицательный взгляд вперед означает, что совпадение будет неудачным, если строка начинается с 000
или 666
[0-8]
- Затем сопоставьте и используйте следующую цифру, если она находится в диапазоне от 0
до 8
[0-9]{2}
- Затем сопоставьте и используйте следующие две цифры, где [0-9] означает любую цифру, которую вы также можете кратко записать как \d
-
- Затем следует дефис
(?!00)
- этот отрицательный взгляд вперед отклоняет совпадение, если следующие две цифры 00
[0-9]{2}
- затем следующий он совпадает и использует любые две цифры
-
- Затем снова следует дефис
(?!0000)
- этот отрицательный взгляд вперед отклоняет совпадение, если следующие четыре цифры 0000
[0-9]{4}
- затем следующий он совпадает и использует любые четыре цифры
$
- конец строки
Надеюсь, мое объяснение понятно. Дайте мне знать по любым вопросам.
Вот код, который я предложил в своем комментарии,
public static Pattern SOCIAL_SECURITY_NUM_PAT = Pattern.compile("^(?!000|666)[0-8][0-9]{2}-(?!00)[0-9]{2}-(?!0000)[0-9]{4}$");
public static boolean isValidSocialSecurityNumber(String input) {
return SOCIAL_SECURITY_NUM_PAT.matcher(input).matches();
}
Вы можете поместить этот код в некоторый класс, например SocialSecurityUtils.java
, и вызывать его из любого места, используя SocialSecurityUtils.isValidSocialSecurityNumber("socialsecuritynumber")