使用validator.js检查.isAlpha时如何包含许多语言环境

时间:2019-04-19 12:20:58

标签: node.js validation express express-validator

在express.js应用程序上,我使用Express-validator中间件来验证(服务器端)输入。在必须仅包含希腊字母或英语字母的特定输入上,我尝试按照Validator.js库的建议尝试使用此isAlpha(['el-GR', 'en-US'])

但是,在测试时,出现此错误:

  

无效的语言环境“ el-GR,en-US”

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

根据express-validator使用的validator.js库,您只能指定一个语言环境。

  

语言环境是...之一

您可以做的是创建一个自定义验证程序,该验证程序循环遍历字符串中的所有字符,并检查它是否为正确语言环境中的字母。例如

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是验证程序链函数。

我还没有测试所有边缘情况,但是乍一看在我的机器上看起来还可以。