Joi 正则表达式不被识别为正则表达式模式

2024-02-16

我正在尝试为密码字段制定验证规则,它应包含以下内容:

  • 必须有号码
  • 必须至少包含一个大写字母
  • 必须包含至少一个小写字母
  • 必须包含以下任何符号 [@$!]
  • 长度应仅为 8 到 20 个字符。

这是我使用的正则表达式模式:(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!#.])[A-Za-z\d$@$!%*?&.]{8,20}

测试于https://regexr.com/ https://regexr.com/

这是 Joi 验证:

password: Joi.string()
.regex(
  '/(?=.*[a-z])(?=.*[A-Z])(?=.*d)(?=.*[$@$!#.])[A-Za-zd$@$!%*?&.]{8,20}/'
)
.required()
.min(8)
.max(20)

错误堆栈跟踪:

{ AssertionError [ERR_ASSERTION]: pattern must be a RegExp
    at internals.String.regex (E:\nodeprojects\voting-system\voting-server\node_modules\joi\lib\types\string\index.js:120:14)
    at Object.<anonymous> (E:\nodeprojects\voting-system\voting-server\src\routes\user.js:16:6)
    at Module._compile (module.js:649:30)
    at Object.Module._extensions..js (module.js:660:10)
    at Module.load (module.js:561:32)
    at tryModuleLoad (module.js:501:12)
    at Function.Module._load (module.js:493:3)
    at Module.require (module.js:593:17)
    at require (internal/module.js:11:18)
    at files.map (E:\nodeprojects\voting-system\voting-server\node_modules\hapi-auto-route\lib\auto-route.js:21:27)
    at Array.map (<anonymous>)
    at Object.module.exports.getRoutes (E:\nodeprojects\voting-system\voting-server\node_modules\hapi-auto-route\lib\auto-route.js:19:18)
    at Object.register (E:\nodeprojects\voting-system\voting-server\node_modules\hapi-auto-route\index.js:16:32)
    at <anonymous>
  generatedMessage: false,
  name: 'AssertionError [ERR_ASSERTION]',
  code: 'ERR_ASSERTION',
  actual: false,
  expected: true,
  operator: '==' }

我知道已经过去了大约两年,但我认为迟到总比不来好????????。

你只需要将图案放入RegExp()

这就是我编辑你的代码的方式:)

const pattern = "/(?=.*[a-z])(?=.*[A-Z])(?=.*d)(?=.*[$@$!#.])[A-Za-zd$@$!%*?&.]{8,20}/";

password: Joi.string()
.regex(RegExp(pattern)) // you have to put it in this way and it will work :)
.required()
.min(8)
.max(20)

我希望它能帮助你!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Joi 正则表达式不被识别为正则表达式模式 的相关文章

随机推荐

  • Postman中如何自动获取token

    我使用 Postman 桌面应用程序进行 Web API 测试 我有很多控制器 每个控制器都需要一个令牌 首先我得到Bearer token然后将其复制到其他请求中 该令牌有时间限制 我可以自动获取令牌 然后自动将其设置为所有其他请求吗 好
  • 生成的 JsonResult 中的属性名称大小写不一致

    我已经为此摸不着头脑有一段时间了 并决定让 SO 社区来尝试一下 我有一些响应客户端 POST 的操作 这些操作执行简单的任务并返回JsonResult从具有简单布尔 Success 属性的匿名类构建 如果成功 或者返回PartialVie
  • 错误:sonar.sources 的值无效

    尝试运行 sonartest 但失败了 我的詹金斯控制台输出 Started by user Badal Singh Building on master in workspace C Program Files x86 Jenkins w
  • 从设备获取屏幕截图时出现意外错误:EOF

    当我尝试在 Android Studio 中从我的某些项目中截取屏幕截图 通过按相机图标 时 我收到以下消息 Unexpected error while obtaining screenshot from device EOF 如果我在打
  • 如何比较java中的多个类?

    现在 我已经编写了对整数和字符串数组进行排序的比较器 从代码中可以看出 如果两个类不相同 则 String 类将采用大于值 但是 这仅允许两个类 如果我想向数组添加另一个基本类型 例如 Float 怎么办 我必须向 if else 语句添加
  • x64 上类方法崩溃的地址

    The AddressOf运算符仅适用于标准 bas 模块内的方法 我使用以下代码来检索类方法的地址 Option Explicit If VBA7 Then Private Declare PtrSafe Function DispCal
  • 如何在 Delphi 中格式化 Unix 时间戳?

    I have var timestamp Longint timestamp Round Now 25569 0 Unix start date in Delphi terms 86400 我在一些 MySql 中使用它作为主键 但我也想格
  • Material UI 组件上的 CSS

    我在尝试使用 Material UI 时不断遇到麻烦 我有一个 Material UI 表 我正在尝试将文本居中对齐 Material UI 标准 CSS 有一个名为 MuiTableCell root 60 的元素 它有一个带有 text
  • 在笑话测试中将通用数据放在哪里

    我不知道如何组织笑话测试的代码 我所有的测试都在 tests 和我所有的嘲笑 mocks 现在我有一些想要在测试之间共享的数据 它们不是现有函数的模拟 它们只是我想在不同文件中使用的一些 javascript 对象 我应该创建一个 data
  • Pentaho j_spring_security_check 混合内容。 HTTPS 到 HTTP

    我已根据需要在 Tomcat 8 5 和 OpenJDK 1 8 上安装了 Pentaho 9 x 在它前面的是带有 mod proxy http 的 Apache 2 4 我的网站使用 HTTPS 提供服务 并且我有以下代理规则 Requ
  • 了解 OCR 的 Freeman 链码

    请注意 我确实在寻找问题的答案 我是not寻找一些源代码或一些学术论文的链接 我已经使用了源代码 并且我已经阅读了论文 但仍然没有弄清楚这个问题的最后部分 我正在研究一些快速屏幕字体 OCRing 并且取得了很好的进展 我已经找到基线 分离
  • 如何在浏览器刷新时清除会话存储,但这不应在单击浏览器后退按钮时清除

    我只想在页面刷新时清除会话存储 而不是在 单击浏览器后退按钮 或单击前进 想要使用 angularjs javascript 来实现这个 我在单击后退按钮时将数据保存在会话存储中 因此我想在单击浏览器刷新按钮时清除相同的数据 但不应清除后退
  • 如何在 ASP.NET MVC 应用程序的 Razor 引擎中使用 Html.Displar 渲染 ModelMetadata 对象?

    我正在尝试利用DisplayTemplatesrazor engine 中的功能可自动渲染我的显示视图 我扫描我的Model找到正确的ModelMetadata对于我想要显示的每个属性 但我无法使用以下方式渲染属性Html DisplayF
  • 如何在 docker 中启用/禁用 buildkit?

    我从文档中得到了这个命令 但我真的不知道如何使用它或者我应该从哪里开始移动 我是 docker 的新手 而且概念对我来说仍然很难消化 DOCKER BUILDKIT 1 docker build 如何使用此命令在 docker 引擎中启用
  • 如何循环遍历特定标签内的每个标签?

    我正在创建一个函数 它有一个 for 循环 该循环遍历特定 div 中的每个标签 例如 这里是 div div div
  • Android BLE 被动扫描

    我想在我的 Android 应用程序中被动扫描 BLE 广告商 但我找不到如何做到这一点 根据蓝牙4 0核心规范 存在被动扫描模式 第6卷 核心系统包 低能耗控制器卷 D 部分 4 1 被动扫描 https www bluetooth or
  • 标准化 ggplot 中叠加密度图的 x 尺度

    当叠加具有相同长度但不同比例的数据的 ggplot 密度图时 是否可以标准化图的 x 比例以使密度匹配 或者有没有办法标准化密度 y 尺度 library ggplot2 data lt data frame x c A B C D E y
  • 使用 rvm 安装 ruby​​ 标头

    Travis CI 使用 RVM 提供 Ruby 但它似乎不包含标头 find home vagrant rvm rubies ruby 1 9 3 p194 lib ruby 1 9 1 i686 linux home vagrant r
  • 如何在 Google 电子表格中使用 OR 语句嵌套 IF 块

    我正在寻找有关我在 Google 电子表格中使用的这段小代码的帮助 ArrayFormula IF OR F2 F Cancelled G2 G Cancelled Cancelled IF F2 F Finished 20 IF G2 G
  • Joi 正则表达式不被识别为正则表达式模式

    我正在尝试为密码字段制定验证规则 它应包含以下内容 必须有号码 必须至少包含一个大写字母 必须包含至少一个小写字母 必须包含以下任何符号 长度应仅为 8 到 20 个字符 这是我使用的正则表达式模式 a z A Z d A Za z d 8