From a16dea3e185515539bc8508592b4691044582dbf Mon Sep 17 00:00:00 2001 From: Edward Akerboom Date: Tue, 10 Aug 2021 10:11:58 +0200 Subject: [PATCH 1/2] Add alphaSpace and alphaNumSpace rules --- README.md | 35 +++++++++ lang/ar.php | 2 + lang/az.php | 2 + lang/bg.php | 2 + lang/de.php | 2 + lang/el.php | 2 + lang/en.php | 2 + lang/es.php | 2 + lang/fi.php | 2 + lang/fr.php | 2 + lang/id.php | 2 + lang/it.php | 2 + lang/ja.php | 2 + lang/ko.php | 2 + lang/lt.php | 2 + lang/lv.php | 2 + lang/nb.php | 2 + lang/nl.php | 2 + lang/nn.php | 2 + lang/pl.php | 2 + lang/pt-br.php | 2 + lang/ro.php | 2 + lang/ru.php | 2 + lang/sk.php | 2 + lang/sl.php | 2 + lang/sv.php | 2 + lang/th.php | 2 + lang/tr.php | 2 + lang/uk.php | 2 + lang/vi.php | 2 + lang/zh-cn.php | 2 + lang/zh-tw.php | 2 + src/Valitron/Validator.php | 24 +++++++ .../Valitron/ValidateAddInstanceRuleTest.php | 2 +- tests/Valitron/ValidateTest.php | 72 +++++++++++++++++++ 35 files changed, 194 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e8e08f4..768afe8 100644 --- a/README.md +++ b/README.md @@ -208,7 +208,9 @@ $this->assertTrue($v->validate()); * `url` - Valid URL * `urlActive` - Valid URL with active DNS record * `alpha` - Alphabetic characters only + * `alphaSpace` - Alphabetic characters and whitespace only * `alphaNum` - Alphabetic and numeric characters only + * `alphaNumSpace` - Alphabetic, numeric, and whitespace characters only * `ascii` - ASCII characters only * `slug` - URL slug characters (a-z, 0-9, -, \_) * `regex` - Field matches given regex pattern @@ -806,6 +808,23 @@ $v->rules([ $v->validate(); ``` +## alphaSpace fields usage +The `alphaSpace` rule checks the field is alphabetic characters and whitespace only. +```php +$v->rule('alphaSpace', 'name'); +``` + +Alternate syntax. +```php +$v = new Valitron\Validator(['name' => 'Bruce Wayne']); +$v->rules([ + 'alphaSpace' => [ + ['name'] + ] +]); +$v->validate(); +``` + ## alphaNum fields usage The `alphaNum` rule checks the field contains only alphabetic or numeric characters. ```php @@ -823,6 +842,22 @@ $v->rules([ $v->validate(); ``` +## alphaNumSpace fields usage +The `alphaNumSpace` rule checks the field contains only alphabetic, numeric, and whitespace characters. +```php +$v->rule('alphaNumSpace', 'street'); +``` + +Alternate syntax. +```php +$v = new Valitron\Validator(['street' => 'Wayne Manor 1']); +$v->rules([ + 'alphaNumSpace' => [ + ['street'] + ] +]); +$v->validate(); +``` ## ascii fields usage The `ascii` rule checks the field contains only characters in the ascii character set. ```php diff --git a/lang/ar.php b/lang/ar.php index 533ccab..1d1846a 100644 --- a/lang/ar.php +++ b/lang/ar.php @@ -18,7 +18,9 @@ 'url' => "الرابط غير صحيح", 'urlActive' => "يجب أن يكون نطاق فعال", 'alpha' => "يجب أن يحتوي فقط علي a-z", + 'alphaSpace' => "يجب أن يحتوي فقط علي a-z", 'alphaNum' => "يجب ان يحتوي فقط a-z او ارقام 0-9", + 'alphaNumSpace' => "يجب ان يحتوي فقط a-z او ارقام 0-9", 'slug' => "يجب ان يحتوي فقط علي a-z, و ارقام 0-9, شرطات و خط سفلي", 'regex' => "خطا بالصيغة", 'date' => "خطا بالتاريخ", diff --git a/lang/az.php b/lang/az.php index 0cb3c03..1a7d3ff 100644 --- a/lang/az.php +++ b/lang/az.php @@ -18,7 +18,9 @@ 'url' => "URL deyil", 'urlActive' => "aktiv domain olmalıdır", 'alpha' => "ancaq latın hərfləri ehtiva etməlidir", + 'alphaSpace' => "ancaq latın hərfləri ehtiva etməlidir", 'alphaNum' => "ancaq latın hərfləri və(və ya) rəqəmlər ehtiva etməlidir", + 'alphaNumSpace' => "ancaq latın hərfləri və(və ya) rəqəmlər ehtiva etməlidir", 'slug' => "ancaq latın hərfləri,rəqəmlər,tire və altdan xət ehtiva etməlidir", 'regex' => "etiabrsız sinvollar ehtiva edir", 'date' => "tarix deyil", diff --git a/lang/bg.php b/lang/bg.php index 2166b11..3658e87 100644 --- a/lang/bg.php +++ b/lang/bg.php @@ -18,7 +18,9 @@ 'url' => "е невалиден URL адрес", 'urlActive' => "трябва да бъде активен домейн", 'alpha' => "трябва да съдържа само букви a-z", + 'alphaSpace' => "трябва да съдържа само букви a-z", 'alphaNum' => "трябва да съдържа само букви a-z и/или цифри 0-9", + 'alphaNumSpace' => "трябва да съдържа само букви a-z и/или цифри 0-9", 'slug' => "трябва да съдържа само букви a-z, цифри 0-9, тирета и долни черти", 'regex' => "съдържа невалидни символи", 'date' => "е невалидна дата", diff --git a/lang/de.php b/lang/de.php index 4e7ae07..3cf06f6 100644 --- a/lang/de.php +++ b/lang/de.php @@ -18,7 +18,9 @@ 'url' => "enthält keine gültige URL", 'urlActive' => "muss eine aktive Domain sein", 'alpha' => "darf nur Buchstaben enthalten", + 'alphaSpace' => "darf nur Buchstaben enthalten", 'alphaNum' => "darf nur Buchstaben und Ganzzahlen enthalten", + 'alphaNumSpace' => "darf nur Buchstaben und Ganzzahlen enthalten", 'slug' => "darf nur Buchstaben, Ganzzahlen, Schrägstriche und Grundstriche enthalten", 'regex' => "enthält ungültige Zeichen", 'date' => "enthält kein gültiges Datum", diff --git a/lang/el.php b/lang/el.php index ae35aaf..37e1e1c 100644 --- a/lang/el.php +++ b/lang/el.php @@ -18,7 +18,9 @@ 'url' => "δεν είναι URL", 'urlActive' => "πρέπει να είναι ενεργό domain", 'alpha' => "πρέπει να περιέχει μόνο χαρακτήρες", + 'alphaSpace' => "πρέπει να περιέχει μόνο χαρακτήρες", 'alphaNum' => "πρέπει να περιέχει μόνο χαρακτήρες και/ή αριθμούς", + 'alphaNumSpace' => "πρέπει να περιέχει μόνο χαρακτήρες και/ή αριθμούς", 'slug' => "πρέπει να περιέχει μόνο χαρακτήρες, αριθμούς, παύλες και κάτω παύλες", 'regex' => "περιέχει μη έγκυρους χαρακτήρες", 'date' => "δεν είναι έγκυρη ημερομηνία", diff --git a/lang/en.php b/lang/en.php index 8e66cb5..37c66df 100644 --- a/lang/en.php +++ b/lang/en.php @@ -20,7 +20,9 @@ 'url' => "is not a valid URL", 'urlActive' => "must be an active domain", 'alpha' => "must contain only letters a-z", + 'alphaSpace' => "must contain only letters a-z", 'alphaNum' => "must contain only letters a-z and/or numbers 0-9", + 'alphaNumSpace' => "must contain only letters a-z and/or numbers 0-9", 'slug' => "must contain only letters a-z, numbers 0-9, dashes and underscores", 'regex' => "contains invalid characters", 'date' => "is not a valid date", diff --git a/lang/es.php b/lang/es.php index 1f3bf8b..95c4a48 100644 --- a/lang/es.php +++ b/lang/es.php @@ -17,7 +17,9 @@ 'url' => "no es una URL", 'urlActive' => "debe ser un dominio activo", 'alpha' => "debe contener solo letras a-z", + 'alphaSpace' => "debe contener solo letras a-z", 'alphaNum' => "debe contener solo letras a-z o números 0-9", + 'alphaNumSpace' => "debe contener solo letras a-z o números 0-9", 'slug' => "debe contener solo letras a-z, números 0-9, barras y guiones bajos", 'regex' => "contiene caracteres inválidos", 'date' => "no es una fecha válida", diff --git a/lang/fi.php b/lang/fi.php index ea2d25b..55d5e96 100644 --- a/lang/fi.php +++ b/lang/fi.php @@ -18,7 +18,9 @@ 'url' => "ei ole URL", 'urlActive' => "ei ole aktiivinen verkkotunnus", 'alpha' => "sisältää muita merkkejä kuin a-z", + 'alphaSpace' => "sisältää muita merkkejä kuin a-z", 'alphaNum' => "sisältää muita merkkejä kuin a-z ja 0-9", + 'alphaNumSpace' => "sisältää muita merkkejä kuin a-z ja 0-9", 'slug' => "sisältää muita merkkejä kuin a-z, 0-9, - ja _", 'regex' => "sisältää virheellisiä merkkejä", 'date' => "ei ole oikeanmuotoinen päivämäärä", diff --git a/lang/fr.php b/lang/fr.php index 124cdac..9bac6ba 100644 --- a/lang/fr.php +++ b/lang/fr.php @@ -18,7 +18,9 @@ 'url' => "n'est pas une URL", 'urlActive' => "doit être un domaine actif", 'alpha' => "doit contenir uniquement les lettres a-z", + 'alphaSpace' => "doit contenir uniquement les lettres a-z", 'alphaNum' => "doit contenir uniquement des lettres de a-z et/ou des chiffres 0-9", + 'alphaNumSpace' => "doit contenir uniquement des lettres de a-z et/ou des chiffres 0-9", 'slug' => "doit contenir uniquement des lettres de a-z, des chiffres 0-9, des tirets et des traits soulignés", 'regex' => "contient des caractères invalides", 'date' => "n'est pas une date valide", diff --git a/lang/id.php b/lang/id.php index 2df9a61..b116e29 100644 --- a/lang/id.php +++ b/lang/id.php @@ -18,7 +18,9 @@ 'url' => "bukan format URL yang benar", 'urlActive' => "harus berupa domain aktif", 'alpha' => "hanya boleh menggunakan huruf a-z", + 'alphaSpace' => "hanya boleh menggunakan huruf a-z", 'alphaNum' => "hanya boleh menggunakan huruf a-z dan atau nomor 0-9", + 'alphaNumSpace' => "hanya boleh menggunakan huruf a-z dan atau nomor 0-9", 'slug' => "hanya boleh menggunakan huruf a-z, nomor 0-9, tanda minus (-), dan uderscore atau strip bawah (_)", 'regex' => "berisi karakter yang tidak valid", 'date' => "format tanggal tidak valid", diff --git a/lang/it.php b/lang/it.php index 467746b..9d5baae 100644 --- a/lang/it.php +++ b/lang/it.php @@ -18,7 +18,9 @@ 'url' => "non è una URL", 'urlActive' => "deve essere un dominio attivo", 'alpha' => "deve contenere solamente lettere (a-z)", + 'alphaSpace' => "deve contenere solamente lettere (a-z)", 'alphaNum' => "deve contenere solamente lettere (a-z) e/o numeri (0-9)", + 'alphaNumSpace' => "deve contenere solamente lettere (a-z) e/o numeri (0-9)", 'slug' => "deve contenere solamente lettere (a-z), numeri (0-9), trattini (-) e trattini bassi (_)", 'regex' => "contiene caratteri non validi", 'date' => "non è una data valida", diff --git a/lang/ja.php b/lang/ja.php index 3eaf6d1..d2b3607 100644 --- a/lang/ja.php +++ b/lang/ja.php @@ -18,7 +18,9 @@ 'url' => "はURLの書式として正しくありません", 'urlActive' => "はアクティブなドメインではありません", 'alpha' => "は半角英字で入力してください", + 'alphaSpace' => "は半角英字で入力してください", 'alphaNum' => "は半角英数字で入力してください", + 'alphaNumSpace' => "は半角英数字で入力してください", 'slug' => "は半角英数字、もしくは「-」「_」の文字で入力してください", 'regex' => "の書式が正しくありません", 'date' => "は日付の書式として正しくありません", diff --git a/lang/ko.php b/lang/ko.php index c4d42bf..1313ad6 100644 --- a/lang/ko.php +++ b/lang/ko.php @@ -18,7 +18,9 @@ 'url' => "은(는) 올바르지 않은 URL입니다.", 'urlActive' => "은(는) 접속 가능한 도메인이어야 합니다.", 'alpha' => "은(는) 영문자(a-z)로만 이루어져야 합니다.", + 'alphaSpace' => "은(는) 영문자(a-z)로만 이루어져야 합니다.", 'alphaNum' => "은(는) 영문자(a-z)와 숫자(0-9)로만 이루어져야 합니다.", + 'alphaNumSpace' => "은(는) 영문자(a-z)와 숫자(0-9)로만 이루어져야 합니다.", 'slug' => "은(는) 영문자(a-z)와 숫자(0-9), 특수문자 -와 _로만 이루어져야 합니다.", 'regex' => "은(는) 올바르지 않은 문자를 포함하고 있습니다.", 'date' => "은(는) 올바르지 않은 날짜입니다.", diff --git a/lang/lt.php b/lang/lt.php index 4404311..6e62a72 100644 --- a/lang/lt.php +++ b/lang/lt.php @@ -19,7 +19,9 @@ 'url' => "nėra teisingas URL", 'urlActive' => "turi būti aktyvus domenas", 'alpha' => "turi turėti tik raides a-ž", + 'alphaSpace' => "turi turėti tik raides a-ž", 'alphaNum' => "turi turėti tik raides a-ž ir/ar skaičius 0-9", + 'alphaNumSpace' => "turi turėti tik raides a-ž ir/ar skaičius 0-9", 'slug' => "turi turėti tik raides a-ž, skaičius 0-9, brukšnelius ir apatinius brukšnelius", 'regex' => "yra neteisingų ženklų", 'date' => "nėra teisinga data", diff --git a/lang/lv.php b/lang/lv.php index fef222a..cd1bdca 100644 --- a/lang/lv.php +++ b/lang/lv.php @@ -18,7 +18,9 @@ 'url' => "lauks nav tīmekļa saite", 'urlActive' => "saite neatrodas esošajā domēna vārdā", 'alpha' => "lauks var saturēt tikai alfabēta burtus a-z", + 'alphaSpace' => "lauks var saturēt tikai alfabēta burtus a-z", 'alphaNum' => "lauks var saturēt tikai alfabēta burtus un/vai ciparus 0-9", + 'alphaNumSpace' => "lauks var saturēt tikai alfabēta burtus un/vai ciparus 0-9", 'slug' => "lauks var saturēt tikai alfabēta burtus un/vai ciparus 0-9, domuzīmes and zemsvītras", 'regex' => "lauks satur nederīgus simbolus", 'date' => "lauks ir nederīgā datuma formātā", diff --git a/lang/nb.php b/lang/nb.php index d5d2d5e..632b242 100644 --- a/lang/nb.php +++ b/lang/nb.php @@ -20,7 +20,9 @@ 'url' => "er ikke en gyldig URL", 'urlActive' => "må være et aktivt domene", 'alpha' => "må bare innholde bokstaver a-z", + 'alphaSpace' => "må bare innholde bokstaver a-z", 'alphaNum' => "må bare innholde bokstaver a-z og/eller tall 0-9", + 'alphaNumSpace' => "må bare innholde bokstaver a-z og/eller tall 0-9", 'slug' => "må bare innholde bokstaver a-z og/eller tall 0-9, bindestreker og understreker", 'regex' => "inneholder ulovlige tegn", 'date' => "er ikke en gyldig dato", diff --git a/lang/nl.php b/lang/nl.php index 7d7fa8f..0f66343 100644 --- a/lang/nl.php +++ b/lang/nl.php @@ -18,7 +18,9 @@ 'url' => "is geen geldige URL", 'urlActive' => "moet een actief domein zijn", 'alpha' => "mag enkel letters (a-z) bevatten", + 'alphaSpace' => "mag enkel letters (a-z) bevatten", 'alphaNum' => "mag enkel letters (a-z) en/of cijfers (0-9) bevatten", + 'alphaNumSpace' => "mag enkel letters (a-z) en/of cijfers (0-9) bevatten", 'slug' => "mag enkel letters (a-z), cijfers (0-9) en liggende streepjes (_,-) bevatten", 'regex' => "bevat ongeldige karakters", 'date' => "is geen geldige datum", diff --git a/lang/nn.php b/lang/nn.php index 1fa3b6b..24c5354 100644 --- a/lang/nn.php +++ b/lang/nn.php @@ -18,7 +18,9 @@ 'url' => "er ikkje ein gyldig URL", 'urlActive' => "må være eit aktivt domene", 'alpha' => "må bare innholde bokstaver a-z", + 'alphaSpace' => "må bare innholde bokstaver a-z", 'alphaNum' => "må bare innholde bokstaver a-z og/eller tall 0-9", + 'alphaNumSpace' => "må bare innholde bokstaver a-z og/eller tall 0-9", 'slug' => "må bare innholde bokstaver a-z og/eller tall 0-9, bindestreker og understreker", 'regex' => "inneholder ulovlige tegn", 'date' => "er ikkje ein gylid dato", diff --git a/lang/pl.php b/lang/pl.php index 0f8f2e0..f439c7b 100644 --- a/lang/pl.php +++ b/lang/pl.php @@ -18,7 +18,9 @@ 'url' => "nie jest URL", 'urlActive' => "musi być aktywną domeną", 'alpha' => "musi zawierać tylko litery a-z", + 'alphaSpace' => "musi zawierać tylko litery a-z", 'alphaNum' => "musi zawierać tylko litery a-z i/lub cyfry 0-9", + 'alphaNumSpace' => "musi zawierać tylko litery a-z i/lub cyfry 0-9", 'slug' => "musi zawierać tylko litery a-z i/lub cyfry 0-9, myślinik I podkreślnik", 'regex' => "zawiera nieprawidłowe znaki", 'date' => "nie jest prawidłową datą", diff --git a/lang/pt-br.php b/lang/pt-br.php index e32afca..72bba83 100644 --- a/lang/pt-br.php +++ b/lang/pt-br.php @@ -17,7 +17,9 @@ 'url' => "não é uma URL válida", 'urlActive' => "deve ser um domínio ativo", 'alpha' => "deve conter as letras a-z", + 'alphaSpace' => "deve conter as letras a-z", 'alphaNum' => "deve conter apenas letras a-z e/ou números 0-9", + 'alphaNumSpace' => "deve conter apenas letras a-z e/ou números 0-9", 'slug' => "deve conter apenas letras a-z, números 0-9, ou os caracteres - ou _", 'regex' => "contém caracteres inválidos", 'date' => "não é uma data válida", diff --git a/lang/ro.php b/lang/ro.php index 5efa2fa..916dcfd 100644 --- a/lang/ro.php +++ b/lang/ro.php @@ -18,7 +18,9 @@ 'url' => "nu este un URL", 'urlActive' => "trebuie sa fie un domeniu activ", 'alpha' => "trebuie sa contina doar litere de la a-z", + 'alphaSpace' => "trebuie sa contina doar litere de la a-z", 'alphaNum' => "trebuie sa contina doar numere de la a-z si/sau numere 0-9", + 'alphaNumSpace' => "trebuie sa contina doar numere de la a-z si/sau numere 0-9", 'slug' => "trebuie sa contina doar litere de la a-z, numere de la 0-9, cratime si underline '_'", 'regex' => "contine caractere invalide", 'date' => "nu este o data valida", diff --git a/lang/ru.php b/lang/ru.php index b934046..0379da1 100644 --- a/lang/ru.php +++ b/lang/ru.php @@ -20,7 +20,9 @@ 'url' => "не является валидной ссылкой", 'urlActive' => "содержит не активную ссылку", 'alpha' => "должно содержать только латинские символы", + 'alphaSpace' => "должно содержать только латинские символы", 'alphaNum' => "должно содержать только латинские символы и/или цифры", + 'alphaNumSpace' => "должно содержать только латинские символы и/или цифры", 'slug' => "должно содержать только латинские символы, цифры, тире и подчёркивания", 'regex' => "содержит недопустимые символы", 'date' => "не является датой", diff --git a/lang/sk.php b/lang/sk.php index 859e53e..9bf3acc 100644 --- a/lang/sk.php +++ b/lang/sk.php @@ -18,7 +18,9 @@ 'url' => "nie je URL", 'urlActive' => "musí byť aktívna URL", 'alpha' => "musí obsahovať len písmená a-z", + 'alphaSpace' => "musí obsahovať len písmená a-z", 'alphaNum' => "musí obsahovať len písmená a-z a/alebo čísla 0-9", + 'alphaNumSpace' => "musí obsahovať len písmená a-z a/alebo čísla 0-9", 'slug' => "musí obsahovať len písmená a-z, čísla 0-9, pomlčky alebo podtržítka", 'regex' => "obsahuje nepovolené znaky", 'date' => "nie je korektný formáť", diff --git a/lang/sl.php b/lang/sl.php index ecc46dc..057663b 100644 --- a/lang/sl.php +++ b/lang/sl.php @@ -20,7 +20,9 @@ 'url' => "ni veljaven URL", 'urlActive' => "mora biti aktivna domena", 'alpha' => "mora vsebovati samo črke a-z", + 'alphaSpace' => "mora vsebovati samo črke a-z", 'alphaNum' => "mora vsebovati samo črke a-z in / ali številke 0-9", + 'alphaNumSpace' => "mora vsebovati samo črke a-z in / ali številke 0-9", 'slug' => "mora vsebovati samo črke a-z, številke 0-9, črtice in podčrtaje", 'regex' => "vsebuje neveljavne znake", 'date' => "ni veljaven datum", diff --git a/lang/sv.php b/lang/sv.php index 5e29669..9de1eaf 100644 --- a/lang/sv.php +++ b/lang/sv.php @@ -18,7 +18,9 @@ 'url' => "är inte en giltlig URL", 'urlActive' => "måste vara ett aktivt domännamn", 'alpha' => "får bara inehålla bokstäver a-z", + 'alphaSpace' => "får bara inehålla bokstäver a-z", 'alphaNum' => "får bara inehålla bokstäver a-z och/eller siffror 0-9", + 'alphaNumSpace' => "får bara inehålla bokstäver a-z och/eller siffror 0-9", 'slug' => "får bara inehålla bokstäver a-z och/eller siffror 0-9, bindesträck og understräck", 'regex' => "inehåller ogiltliga tecken", 'date' => "är inte ett giltligt datum", diff --git a/lang/th.php b/lang/th.php index 6f4af40..ec04aec 100644 --- a/lang/th.php +++ b/lang/th.php @@ -18,7 +18,9 @@ 'url' => "ไม่ใช่ลิงก์", 'urlActive' => "ต้องไม่ใช่โดเมนที่ใช้งานอยู่", 'alpha' => "ต้องมีแค่ตัวอักษร a-z", + 'alphaSpace' => "ต้องมีแค่ตัวอักษร a-z", 'alphaNum' => "ต้องมีแค่ตัวอักษร a-z และ/หรือ ตัวเลข 0-9", + 'alphaNumSpace' => "ต้องมีแค่ตัวอักษร a-z และ/หรือ ตัวเลข 0-9", 'slug' => "ต้องมีแค่ตัวอักษร a-z ตัวเลข 0-9 / และ _", 'regex' => "มีตัวอักษรที่ไม่ถูกต้อง", 'date' => "ไม่ใช่วันที่ที่ถูกต้อง", diff --git a/lang/tr.php b/lang/tr.php index 11fa708..bfc5611 100644 --- a/lang/tr.php +++ b/lang/tr.php @@ -18,7 +18,9 @@ 'url' => "bir URL değil", 'urlActive' => "aktif bir alan adı olmalı", 'alpha' => "sadece harf içermeli a-z", + 'alphaSpace' => "sadece harf içermeli a-z", 'alphaNum' => "sadece harf (a-z) ve/veya sayılar (0-9) içermeli", + 'alphaNumSpace' => "sadece harf (a-z) ve/veya sayılar (0-9) içermeli", 'slug' => "sadece harf (a-z), numbers sayılar (0-9), tire ve alt tire içermeli", 'regex' => "geçersiz karakterler içeriyor", 'date' => "geçerli bir karakter değil", diff --git a/lang/uk.php b/lang/uk.php index 65df219..46fc134 100644 --- a/lang/uk.php +++ b/lang/uk.php @@ -18,7 +18,9 @@ 'url' => "не є посиланням", 'urlActive' => "містить не активне посилання", 'alpha' => "повинно містити тільки латинські символи", + 'alphaSpace' => "повинно містити тільки латинські символи", 'alphaNum' => "повинно містити тільки латинські символи та/або цифри", + 'alphaNumSpace' => "повинно містити тільки латинські символи та/або цифри", 'slug' => "повинно містити тільки латинські символи, цифри, тире і підкреслення", 'regex' => "містить неприпустимі символи", 'date' => "не є датою", diff --git a/lang/vi.php b/lang/vi.php index de7d91d..576b9d4 100644 --- a/lang/vi.php +++ b/lang/vi.php @@ -18,7 +18,9 @@ 'url' => "không phải là URL", 'urlActive' => "Domain chưa được kích hoạt", 'alpha' => "chỉ chứa các kí tự a-z", + 'alphaSpace' => "chỉ chứa các kí tự a-z", 'alphaNum' => "chỉ chứa các kí tự a-z hoặc số 0-9", + 'alphaNumSpace' => "chỉ chứa các kí tự a-z hoặc số 0-9", 'slug' => "chỉ chứa các kí tự a-z, số 0-9, gạch nối và gạch dưới", 'regex' => "chứa kí tự không hợp lệ", 'date' => "thời gian hợp lệ", diff --git a/lang/zh-cn.php b/lang/zh-cn.php index d0c8015..97bf13d 100644 --- a/lang/zh-cn.php +++ b/lang/zh-cn.php @@ -18,7 +18,9 @@ 'url' => "无效的URL", 'urlActive' => "必须是可用的域名", 'alpha' => "只能包括英文字母(a-z)", + 'alphaSpace' => "只能包括英文字母(a-z)", 'alphaNum' => "只能包括英文字母(a-z)和数字(0-9)", + 'alphaNumSpace' => "只能包括英文字母(a-z)和数字(0-9)", 'slug' => "只能包括英文字母(a-z)、数字(0-9)、破折号和下划线", 'regex' => "无效格式", 'date' => "无效的日期", diff --git a/lang/zh-tw.php b/lang/zh-tw.php index 70fb664..7825fc6 100644 --- a/lang/zh-tw.php +++ b/lang/zh-tw.php @@ -18,7 +18,9 @@ 'url' => "無效的URL", 'urlActive' => "必須是可用的域名", 'alpha' => "只能包括英文字母(a-z)", + 'alphaSpace' => "只能包括英文字母(a-z)", 'alphaNum' => "只能包括英文字母(a-z)和數字(0-9)", + 'alphaNumSpace' => "只能包括英文字母(a-z)和數字(0-9)", 'slug' => "只能包括英文字母(a-z)、數字(0-9)、破折號和下劃線", 'regex' => "無效格式", 'date' => "無效的日期", diff --git a/src/Valitron/Validator.php b/src/Valitron/Validator.php index 60b1603..e76377a 100644 --- a/src/Valitron/Validator.php +++ b/src/Valitron/Validator.php @@ -692,6 +692,18 @@ protected function validateAlpha($field, $value) return preg_match('/^([a-z])+$/i', $value); } + /** + * Validate that a field contains only alphabetic characters and whitespace. + * + * @param string $field + * @param mixed $value + * @return bool + */ + protected function validateAlphaSpace($field, $value) + { + return preg_match('/^([a-z\s])+$/i', $value); + } + /** * Validate that a field contains only alpha-numeric characters * @@ -704,6 +716,18 @@ protected function validateAlphaNum($field, $value) return preg_match('/^([a-z0-9])+$/i', $value); } + /** + * Validate that a field contains only alpha-numeric characters and whitespace. + * + * @param string $field + * @param mixed $value + * @return bool + */ + protected function validateAlphaNumSpace($field, $value) + { + return preg_match('/^([a-z0-9\s])+$/i', $value); + } + /** * Validate that a field contains only alpha-numeric characters, dashes, and underscores * diff --git a/tests/Valitron/ValidateAddInstanceRuleTest.php b/tests/Valitron/ValidateAddInstanceRuleTest.php index 03cf5cb..6bf7a01 100644 --- a/tests/Valitron/ValidateAddInstanceRuleTest.php +++ b/tests/Valitron/ValidateAddInstanceRuleTest.php @@ -115,6 +115,6 @@ public function testUniqueRuleName() $v->addInstanceRule("foo_rule", function () { }); $u = $v->getUniqueRuleName("foo"); - $this->assertRegExp("/^foo_rule_[0-9]{1,5}$/", $u); + $this->assertMatchesRegularExpression("/^foo_rule_[0-9]{1,5}$/", $u); } } diff --git a/tests/Valitron/ValidateTest.php b/tests/Valitron/ValidateTest.php index a7f7158..fc36a65 100644 --- a/tests/Valitron/ValidateTest.php +++ b/tests/Valitron/ValidateTest.php @@ -1307,6 +1307,42 @@ public function testAlphaInvalidAltSyntax() $this->assertFalse($v->validate()); } + public function testAlphaSpaceValid() + { + $v = new Validator(array('name' => 'Bruce Wayne')); + $v->rule('alphaSpace', 'name'); + $this->assertTrue($v->validate()); + } + + public function testAlphaSpaceValidAltSyntax() + { + $v = new Valitron\Validator(array('name' => 'Bruce Wayne')); + $v->rules(array( + 'alphaSpace' => array( + array('name') + ) + )); + $this->assertTrue($v->validate()); + } + + public function testAlphaSpaceInvalid() + { + $v = new Validator(array('street' => 'Wayne Manor 1')); + $v->rule('alphaSpace', 'street'); + $this->assertFalse($v->validate()); + } + + public function testAlphaSpaceInvalidAltSyntax() + { + $v = new Valitron\Validator(array('street' => 'Wayne Manor 1')); + $v->rules(array( + 'alphaSpace' => array( + array('street') + ) + )); + $this->assertFalse($v->validate()); + } + public function testAlphaNumValid() { $v = new Validator(array('test' => 'abc123')); @@ -1343,6 +1379,42 @@ public function testAlphaNumInvalidAltSyntax() $this->assertFalse($v->validate()); } + public function testAlphaNumSpaceValid() + { + $v = new Validator(array('street' => 'Wayne Manor 1')); + $v->rule('alphaNumSpace', 'street'); + $this->assertTrue($v->validate()); + } + + public function testAlphaNumSpaceValidAltSyntax() + { + $v = new Valitron\Validator(array('street' => 'Wayne Manor 1')); + $v->rules(array( + 'alphaNumSpace' => array( + array('street') + ) + )); + $this->assertTrue($v->validate()); + } + + public function testAlphaNumSpaceInvalid() + { + $v = new Validator(array('street' => 'Wayne Manor 1#')); + $v->rule('alphaNumSpace', 'street'); + $this->assertFalse($v->validate()); + } + + public function testAlphaNumSpaceInvalidAltSyntax() + { + $v = new Valitron\Validator(array('street' => 'Wayne Manor 1#')); + $v->rules(array( + 'alphaNum' => array( + array('street') + ) + )); + $this->assertFalse($v->validate()); + } + public function testAlphaDashValid() { $v = new Validator(array('test' => 'abc-123_DEF')); From c9350b13f8b64e4fa9d9bff339618dc4fa041c4a Mon Sep 17 00:00:00 2001 From: Edward Akerboom Date: Tue, 10 Aug 2021 10:20:15 +0200 Subject: [PATCH 2/2] Undo change to assertMatchesRegularExpression --- tests/Valitron/ValidateAddInstanceRuleTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Valitron/ValidateAddInstanceRuleTest.php b/tests/Valitron/ValidateAddInstanceRuleTest.php index 6bf7a01..03cf5cb 100644 --- a/tests/Valitron/ValidateAddInstanceRuleTest.php +++ b/tests/Valitron/ValidateAddInstanceRuleTest.php @@ -115,6 +115,6 @@ public function testUniqueRuleName() $v->addInstanceRule("foo_rule", function () { }); $u = $v->getUniqueRuleName("foo"); - $this->assertMatchesRegularExpression("/^foo_rule_[0-9]{1,5}$/", $u); + $this->assertRegExp("/^foo_rule_[0-9]{1,5}$/", $u); } }