Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да заменим lookahead в regex?

Има два подхода. Единият е да се състави един израз, който обработва всички възможни алтернативи:

^[a-zA-Z][0-9][a-zA-Z0-9-,._;:]{6,}$
  |
^[a-zA-Z][a-zA-Z0-9-,._;:][0-9][a-zA-Z0-9-,._;:]{5,}$
  |
^[a-zA-Z][a-zA-Z0-9-,._;:]{2}[0-9][a-zA-Z0-9-,._;:]{4,}$

и т.н. Това е комбинаторен кошмар, но ще свърши работа.

Много по-прост подход е един и същи низ да се валидира два пъти, като се използват два израза:

^[a-zA-Z0-9-,._;:]{8,}$          # check length and permitted characters

и

[a-zA-Z].*[0-9]|[0-9].*[a-zA-Z]  # check required characters

РЕДАКТИРАНЕ:@briandfoy правилно посочва, че ще бъде по-ефективно да се търси всеки задължителен знак поотделно:

[a-zA-Z]                         # check for required alpha

и

[0-9]                            # check for required digit


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преглед на отворени транзакции в Oracle

  2. как да отпечатам цялата таблица с помощта на анонимен блок в pl sql?

  3. Материализиран изглед и таблица със същото име

  4. Идентификаторът на Fluent Nhibernate Oracle е твърде дълъг - проблем с името на псевдонима

  5. Ограничение на артикули от клауза 1000 на SQL IN