Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como substituir o lookahead em regex?


Existem duas abordagens. Uma é compor uma única expressão que trate de todas as alternativas possíveis:
^[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,}$

etc. Este é um pesadelo combinatório, mas funcionaria.

Uma abordagem muito mais simples é validar a mesma string duas vezes usando duas expressões:
^[a-zA-Z0-9-,._;:]{8,}$          # check length and permitted characters

e


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



EDIT:@briandfoy aponta corretamente que será mais eficiente pesquisar cada caractere necessário separadamente:
[a-zA-Z]                         # check for required alpha

e
[0-9]                            # check for required digit