sql >> Databasteknik >  >> RDS >> Oracle

Hur byter man ut lookahead i regex?

Det finns två tillvägagångssätt. En är att komponera ett enda uttryck som hanterar alla möjliga alternativ:

^[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. Detta är en kombinatorisk mardröm, men det skulle fungera.

Ett mycket enklare tillvägagångssätt är att validera samma sträng två gånger med två uttryck:

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

och

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

EDIT:@briandfoy påpekar korrekt att det blir mer effektivt att söka efter varje obligatoriskt tecken separat:

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

och

[0-9]                            # check for required digit


  1. Gruppera efter månad i Oracle

  2. Hur dödar du alla nuvarande anslutningar till en SQL Server 2005-databas?

  3. Optimera Postgres tidsstämpel frågeintervall

  4. Försöker fylla en rullgardinsmeny i codeigniter med mysql-data