sql >> Databáze >  >> RDS >> Oracle

Jak nahradit lookahead v regulárním výrazu?

Existují dva přístupy. Jedním z nich je sestavit jediný výraz, který zvládne všechny možné alternativy:

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

atd. Toto je kombinatorická noční můra, ale fungovalo by to.

Mnohem jednodušší přístup je ověřit stejný řetězec dvakrát pomocí dvou výrazů:

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

a

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

EDIT:@briandfoy správně upozorňuje, že bude efektivnější hledat každý požadovaný znak zvlášť:

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

a

[0-9]                            # check for required digit


  1. Jak napsat připravit a provést příkazy v OOP PDO?

  2. Jak najít konkrétní řádek ve výsledku dotazu MySQL?

  3. chyba nastavení java String[] do postgres připraveného příkazu

  4. Sql:vyberte všechny košíky obsahující sadu konkrétních položek