2017-12-18 10 views
1

Ich benutze joi für die Validierung und ich versuche, einen Kommentare TextArea- Inhalt in der folgenden Art und Weise zu überprüfen:JOI Validierung Zeichenfolge nicht auf, und

const schema = Joi.object().keys({ 
    firstName: Joi.string().alphanum().min(3).max(30).required(), 
    lastName: Joi.string().alphanum().min(3).max(30).required(), 
    company: Joi.string().alphanum().min(3).max(30).required(), 
    comments: Joi.string().alphanum().min(30).max(1500).required(), 
    email: Joi.string().email().required() 
}); 

Wenn jedoch jemand betritt ein Komma oder fullstop, die Validierung schlägt fehl. Wie kann ich diese Ausnahmen zur Validierung hinzufügen?

Antwort

1

Da Sie wahrscheinlich wollen in das Kommentarfeld Menschen zu etwas zu ermöglichen, würde ich einfach die alphanum für die Kommentare Validierung auslassen, wie folgt aus:

const schema = Joi.object().keys({ 
    firstName: Joi.string().alphanum().min(3).max(30).required(), 
    lastName: Joi.string().alphanum().min(3).max(30).required(), 
    company: Joi.string().alphanum().min(3).max(30).required(), 

    // note: no alphanum here 
    comments: Joi.string().min(30).max(1500).required(), 

    email: Joi.string().email().required() 
}); 

Wenn Sie wirklich müssen, wirklich Kommentare haben, dass enthalten nur Buchstaben, Zahlen, Kommas und Punkte, können Sie zur Verwendung der regex Regel zurückgreifen:

const schema = Joi.object().keys({ 
    // ... 
    comments: Joi.string().regex(/^[,. a-z0-9]+$/).required(), 
    // ... 
}); 
0

Sie einen regulären Ausdruck verwenden können, die alphanumerische Zeichen plus Komma enthält. Ich habe keine Ahnung was du meinst von fullstop btw.

Joi.string().regex(/^[a-zA-Z0-9, ]*$/, 'Alphanumerics, space and comma characters').min(3).max(30).required() 

Hinweis: Das wird buchstäblich passen nur die Zeichen in den Bereichen a-z, A-Z, 0-9 und den Raum und Kommazeichen. Alles andere (wie das Periodenzeichen, Klammern, Klammern?) Müssten Sie hinzufügen.

Quelle ist die Joi API docs.

0

Sie können einfach Regex Syntax für die gleiche comments: Joi.string().regex(/^[a-zA-Z0-9,. ]*$/).min(3).max(30).required()

verwenden
Verwandte Themen