Express-validator 的 isAlpha() 函数中的空格问题

Man*_*ari 3 validation mongodb node.js express express-validator

我在我的项目中使用 Express-validator 我来自客户端的 json 是

{"name": "john doe"}
Run Code Online (Sandbox Code Playgroud)

我的快速验证码是

[check('name', 'invalid name').isAlpha()]
Run Code Online (Sandbox Code Playgroud)

为什么此代码返回无效名称,而这是一个字符串。我也尝试了isString()但它也不起作用,它的工作方式与isAlpha()相同。对客户端的错误json 响应是

{
"errors": [
    {
        "value": "john doe",
        "msg": "invalid name",
        "param": "name",
        "location": "body"
    }
]
}
Run Code Online (Sandbox Code Playgroud)

isAlpha() 函数是否只将一个单词视为字符串

我怎样才能解决这个问题

小智 7

有一个 .isAlpha 选项可以用来忽略空格:

 check('name', 'invalid name').isAlpha('en-US', {ignore: ' '})
Run Code Online (Sandbox Code Playgroud)

第一个参数“en-US”是 AlphaLocale。例如,我使用“es-ES”来验证西班牙语特殊字符。您可以使用其中之一来验证其他语言: 'ar' | 'ar-AE' | 'ar-AE' | 'ar-BH' | 'ar-BH' | 'ar-DZ' | 'ar-DZ' | 'ar-EG' | 'ar-IQ' | 'ar-IQ' | 'ar-JO' | 'ar-JO' | 'ar-KW' | 'ar-KW' | 'ar-LB'| 'ar-LY' | 'ar-MA' | 'ar-MA' | 'ar-QA' | 'ar-QA' | 'ar-QM' | 'ar-QM' | 'ar-SA' | 'ar-SD' | 'ar-SD' | 'ar-SY' | 'ar-TN' | 'ar-TN' | 'ar-YE' | 'az-AZ' | 'bg-BG' | 'bg-BG' | 'cs-CZ' | 'cs-CZ' | 'da-DK' | 'da-DK' | 'de-DE' | 'el-GR' | 'el-GR' | 'en-AU' | 'en-GB' | 'en-HK' | 'en-IN' | 'en-IN' | 'en-NZ' | 'en-NZ' | 'en-US' | 'en-ZA' | 'en-ZM' | 'es-ES' | 'fa-AF' | 'fa-AF' | 'fa-IR' | 'fa-IR' | 'fr-FR' | 'fr-FR' | '他' | '呼-呼' | 'id-ID' | 'id-ID' | '它-IT' | 'ku-IQ' | 'ku-IQ' | 'nb-NO' | 'nl-NL' | 'nl-NL' | 'nn-NO' | 'pl-PL' | 'pl-PL' | 'pt-BR' | 'pt-BR' | 'PT-PT'| 'ru-RU' | 'sk-SK' | 'sl-SI' | 'sl-SI' | 'sr-RS' | 'sr-RS' | 'sr-RS@拉丁' | 'sv-SE' | 'th-TH' | 'th-TH' | 'tr-TR' | 'tr-TR' | '英国-UA' | 'vi-VN'。

第二个参数是 IsAlphaOptions 对象。它仅包含一个可选参数“ignore”,并且可以具有字符串、string[] 或 RegExp 的值。因此您也可以使用 RegExp \s 忽略空格。

.isAlpha('en-US', {ignore: '\s'})
Run Code Online (Sandbox Code Playgroud)