首页 > 解决方案 > 如何在使用 validator.js 检查 .isAlpha 时包含许多语言环境

问题描述

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

然而,在测试这个时,我得到了这个错误:

无效的区域设置“el-GR,en-US”

我究竟做错了什么?

标签: node.jsvalidationexpressexpress-validator

解决方案


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

语言环境是其中之一...

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

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

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


推荐阅读