У меня есть следующий (не работает) регулярное выражениеРегулярное выражение для обеспечения длины проверяет слишком
(^$|(([a-zA-Z]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?))((^([a-zA-Z0-9]{8})$)|(^([a-zA-Z0-9]{11})$)))
Позвольте мне сломать логику.
^$|
- первая часть, это по существу означает, что строка равна 0 length, она проверяет истину.
очевидно | обозначает a или.
затем добавляет следующий бит.
([a-zA-Z]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?)
- это формат строки, которая должна соответствовать, в действительности это соответствует BIC (код банковского идентификатора).
Таким образом, мы в конечном итоге с:
pattern: '(^$|([a-zA-Z]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?))'
В основном соответствуют только БИК, если значение было предусмотрено, хорошо до сих пор?
Однако теперь я хочу расширить это, чтобы гарантировать, что строка имеет 8 или 11 символов.
поэтому я придумал этот небольшой запрос, чтобы соответствовать 8 символов: (^([a-zA-Z0-9]{8})$)
так, если мы расслоению, что в наше регулярное выражение мы в конечном итоге с
'(^$|([a-zA-Z]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?)(^([a-zA-Z0-9]{8})$))'
Так что на данный момент он не за работой .
Каков правильный способ проверки длины?
Это что-то с синтаксисом, вызывающим проблему?
Вам не хватает OR в регулярном выражении? – Behe
Можете ли вы дать желаемые приемлемые и неприемлемые входы? –
Не думайте, что это должно выглядеть как len (0) ИЛИ (patten AND len (8)) –