Powershell: Weryfikacja parametru z wykorzystaniem wyrażeń regularnych

5-Mar-2015

W Powershell można weryfikować, czy napis „pasuje” do wyrażenia regularnego korzystając z typu [regex] oraz jego metody IsMatch.

Z drugiej strony, definiując parametry funkcji możesz weryfikować poprawność parametru korzystając z ValidateScript.

Jak sprawdzić, czy parametr przychodzący do funkcji jest zgodny z wyrażeniem regularnym?

Oto propozycja:

  • Parametrem jest $phone, który ma być numerem telefonu rozpoczynającym się od „+48 ” lub „0048 „
  • Wyrażenie regularne opisujące takie numery telefonu to [regex]”\+48 [0-9]{9}|0048 [0-9]{9}”
  • W ValidateScript tworzymy zmienną $mask, która jest wyrażeniem regularnym
  • Następnie sprawdzamy wywołując $match.IsMatch, czy przekazywana wartość czyli $_  pasuje do wyrażenia
  • To sprawdzenie zwraca $true – udało się lub $false – był błąd

[ValidateScript({$mask = [regex]”\+48 [0-9]{9}|0048 [0-9]{9}”; $mask.IsMatch($_) })][string]$phone=’+48 123456789′
$phone = ‚123456789’      # ERROR !!!!
$phone = ’0048 123456789′  # OK 🙂

Dodaj komentarz:

Autor: Rafał Kraik