白色 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()
.
我在我的项目中使用 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()
.