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 🙂