如何在使用 validator.js 检查 .isAlpha 时包含多个语言环境
How to include many locales while checking .isAlpha with validator.js
在开发 express.js 应用程序时,我使用 Express-validator 中间件验证(服务器端)输入。在必须仅包含希腊字母或英文字母的特定输入上,我按照 validator.js 库的建议尝试此 isAlpha(['el-GR', 'en-US'])
。
然而,在测试这个时,我得到了这个错误:
Invalid locale 'el-GR,en-US'
我做错了什么?
根据 express-validator 使用的 validator.js 库,您只能指定一种语言环境。
Locale is one of ...
您可以做的是创建一个自定义验证器,循环遍历字符串中的所有字符,并检查它是否是正确语言环境中的字母。例如
const { validator } = require('express-validator');
const { check } = require('express-validator/check');
module.exports.add = [
check('title').custom(value => {
for(let charIdx = 0; charIdx < value.length; charIdx += 1) {
if (!validator.isAlpha(value[charIdx], 'en-US')
&& !validator.isAlpha(value[charIdx], 'el-GR')) {
throw new Error('Illegal title');
}
}
return true;
})
];
add 是验证者链函数。
我没有测试所有边缘情况,但乍一看它在我的机器上看起来没问题。
在开发 express.js 应用程序时,我使用 Express-validator 中间件验证(服务器端)输入。在必须仅包含希腊字母或英文字母的特定输入上,我按照 validator.js 库的建议尝试此 isAlpha(['el-GR', 'en-US'])
。
然而,在测试这个时,我得到了这个错误:
Invalid locale 'el-GR,en-US'
我做错了什么?
根据 express-validator 使用的 validator.js 库,您只能指定一种语言环境。
Locale is one of ...
您可以做的是创建一个自定义验证器,循环遍历字符串中的所有字符,并检查它是否是正确语言环境中的字母。例如
const { validator } = require('express-validator');
const { check } = require('express-validator/check');
module.exports.add = [
check('title').custom(value => {
for(let charIdx = 0; charIdx < value.length; charIdx += 1) {
if (!validator.isAlpha(value[charIdx], 'en-US')
&& !validator.isAlpha(value[charIdx], 'el-GR')) {
throw new Error('Illegal title');
}
}
return true;
})
];
add 是验证者链函数。
我没有测试所有边缘情况,但乍一看它在我的机器上看起来没问题。