Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak zamienić lookahead w regex?

Istnieją dwa podejścia. Jednym z nich jest utworzenie pojedynczego wyrażenia, które obsługuje wszystkie możliwe alternatywy:

^[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,}$

itp. To kombinatoryczny koszmar, ale zadziała.

O wiele prostszym podejściem jest dwukrotna walidacja tego samego ciągu za pomocą dwóch wyrażeń:

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

i

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

EDYCJA:@briandfoy poprawnie wskazuje, że bardziej wydajne będzie wyszukiwanie każdego wymaganego znaku osobno:

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

i

[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. Polecenie Oracle CREATE TABLE w PL/SQL z 10 przykładami

  2. Jak wybrać rekordy pogrupowane według godziny dnia, w tym godzin, które nie mają rekordów?

  3. JOIN z warunkiem w zapytaniu HQL?

  4. Problem Oracle SEQUENCE.Currval w CodeIgniter

  5. Jak mogę uzyskać liczbę dni między 2 datami w Oracle 11g?