Kuidas kontrollida regulaaravaldisega, et string tohib sisaldada ainult numbreid ning suurtähti (A-Z)?

Postitas Erki Eessaar, 01.06.2022 00:00 (muudeti 29.10.2023 15:21)
Järgnevaid lauseid tuleb käivitada PostgreSQLi andmebaasisüsteemis. Soovi korral saate näiteks kasutada DB Fiddle keskkonda.

Katsetus 1

Regulaaravaldis: '[A-Z0-9]+'

Kuidas kontrollida seda regulaaravaldist PostgreSQLis?

SELECT 'EST?12'~'[A-Z0-9]+' AS tulemus;

ja

SELECT 'est12'~'[A-Z0-9]+' AS tulemus;

annavad mõlemad tulemuseks TRUE, sest kontrollitakse, et stringis sisalduks vähemalt üks märk (seda näitab +), mis kuulub märkide klassi [A-Z0-9].

Seega see regulaaravaldis seda ülesannet ei lahenda.

Katsetus 2

Regulaaravaldis: '^[A-Z0-9]+$'

^ tähendab stringi algust
$ tähendab stringi lõppu
Stringi alguse ja lõpu vahel tohivad olla vaid märkide klassi kuuluvad märgid.

Kuidas kontrollida seda regulaaravaldist PostgreSQLis?

SELECT 'EST?12'~'^[A-Z0-9]+$' AS tulemus;

ja

SELECT 'est12'~'^[A-Z0-9]+$' AS tulemus;

annavad mõlemad tulemuseks FALSE.

SELECT 'EST12'~'^[A-Z0-9]+$' AS tulemus;

ja

SELECT 'est12'~*'^[A-Z0-9]+$' AS tulemus;

annavad mõlemad tulemuseks TRUE.

SELECT 'est12'~*'^[A-Z0-9]+$' AS tulemus;

tulemuseks on TRUE, sest ~* operaator teostab tõstutundetut vastavuse kontrolli.


Kas postitus oli kasulik? Hinda seda!

Keskmine hinne: Pole veel hinnanguid!


← Eelmine postitus Miks peaks tabeliga seotud kitsenduse või indeksi nimi sisaldama tabeli nime? Järgmine postitus → Kui soovin kontrollida, et nimi tohib sisaldada vaid tähti ja tühikuid, siis kas sobib selline regulaaravaldise muster: <b>'^([a-zA-Z]|[[:space:]])+$'</b> ?