白色 space express-validator 的 isAlpha() 函数中的问题

white space issue in isAlpha() function of express-validator

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

{"name": "john doe"}

我的快递验证码是

[check('name', 'invalid name').isAlpha()]

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

{
"errors": [
    {
        "value": "john doe",
        "msg": "invalid name",
        "param": "name",
        "location": "body"
    }
]
}

isAlpha()函数是否只考虑一个单词作为字符串

我该如何解决这个问题

我得到了答案。我使用自定义验证方法。它解决了我的问题。

[check('name').custom((value,{req})=>{
                if(isNaN(value)){
                    return true;
                }else{
                    throw new Error('invalid name')
                }
 })]

要使用 express-validator 检查字符串仅包含字母和空格,您可以使用正则表达式

check('name').custom((value) => {
            return value.match(/^[A-Za-z ]+$/);
          })

“john doe”由白色组成 space“ ”。由于这个 white-space isAlpha() 抛出错误。 isAlpha 只允许 a-zA-Z。

您可以使用 .isAlpha 选项来忽略空格:

 check('name', 'invalid name').isAlpha('en-US', {ignore: ' '})

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

第二个参数是对象IsAlphaOptions。它只包含一个可选参数'ignore',它的值可以是字符串、string[]或RegExp。 因此,您也可以使用 RegExp \s.

忽略空格
.isAlpha('en-US', {ignore: '\s'})

只需替换isAlpha()isAlphaNumeric()

isAlphanumericWithSpace()/isAlphaWithSpace().