Как проверить ISIN с помощью регулярных выражений

Опубликовано: 21 Февраля, 2023

ISIN расшифровывается как Международный идентификационный номер ценных бумаг.

Учитывая строку str , задача состоит в том, чтобы проверить, является ли данная строка допустимым ISIN (международным идентификационным номером ценных бумаг) или нет, с помощью регулярного выражения . Действительный ISIN (международный идентификационный номер ценных бумаг) должен соответствовать следующим условиям:

  1. Это должна быть комбинация цифр и букв, а иногда и дефис (-).
  2. Если ISIN содержит дефис (-), то его длина должна быть равна 14, иначе длина должна быть равна 12.
  3. Код ISIN должен начинаться только с букв.
  4. Он должен заканчиваться цифрами.
  5. Он не должен содержать пробелов.
  6. Кроме символа дефиса (-), он не должен содержать никаких специальных символов.

Примеры:

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 Codes

Input: 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)

Статьи по Теме:

  • Как писать регулярные выражения?