Как проверить ISIN с помощью регулярных выражений
ISIN расшифровывается как Международный идентификационный номер ценных бумаг.
Учитывая строку str , задача состоит в том, чтобы проверить, является ли данная строка допустимым ISIN (международным идентификационным номером ценных бумаг) или нет, с помощью регулярного выражения . Действительный ISIN (международный идентификационный номер ценных бумаг) должен соответствовать следующим условиям:
- Это должна быть комбинация цифр и букв, а иногда и дефис (-).
- Если ISIN содержит дефис (-), то его длина должна быть равна 14, иначе длина должна быть равна 12.
- Код ISIN должен начинаться только с букв.
- Он должен заканчиваться цифрами.
- Он не должен содержать пробелов.
- Кроме символа дефиса (-), он не должен содержать никаких специальных символов.
Примеры:
Input: str=”US012071998”
Output: True
Explanation: As it starts with alphabets, ends with digit and length is equal to 12.Input: str=”US-01207199-8”
Output: True
Explanation: It contains hyphen(-), Hence its length should be equal to 14.Input: str=”@US-12345”
Output: false
Explanation: It starts with special symbol “@” and not satisfying with the proper format of ISIN CodesInput: str=”XS9136812895”
Output: false
Explanation: Its length is greater than 12.Input: str=”IN01012023”
Output: false
Explanation: Its length is not equal to 12.
Подход:
The Idea is to use Regular Expression. Regex will validate the entered data and will provide the exact format. Below are steps that can be taken for the problem:
Шаблон регулярного выражения для проверки кода ISIN должен быть таким, как написано ниже:
regex = “^[A-Z]{2}[-]{0, 1}[0-9A-Z]{8}[-]{0, 1}[0-9]{1}$”
Where,
- ^ Indicates starts of the string
- [A-Z]{2} matches two preceding characters in the range form “A” to “Z”.
- [-]{0, 1} will match one or zero preceding hyphen symbol in the string.
- [0-9A-Z{8} This will match 8 of the preceding items in the range of “A” to “Z” and 0 to 9.
- [0-9]{1} It will match one of the preceding items in the range of 0 to 9.
Для реализации идеи выполните следующие шаги:
- Создайте узор.
- Сопоставьте заданную строку с регулярным выражением. В Java это можно сделать с помощью Pattern.matcher().
- Возвращает true, если строка соответствует заданному регулярному выражению, иначе возвращает false.
Ниже приведена реализация описанного выше подхода.
Временная сложность: O(N), где N — длина строки.
Вспомогательное пространство: O(1)
Статьи по Теме:
- Как писать регулярные выражения?