如何在Joi正则的否定字符集中添加']'特殊字符?
Joi正则校验添加']'到禁止字符集的正确实现
正则表达式的否定字符集[^...]中,]是特殊标记,直接放在字符集中间会被识别为字符集的结束符号,导致语法报错。你可以通过以下两种方式解决:
方法1:将']'放在字符集最开头
在否定字符集的起始位置(^之后)直接写],正则引擎会将其当作普通禁止字符,而非结束标记:
message: Joi.string().regex(/^[]^<>#*=+}[]+$/).required()
注:字符集里的^若不在最开头位置,仅作为普通字符存在,不会影响否定校验的逻辑。
方法2:对']'进行转义
用反斜杠\对]转义,明确告知正则引擎这是一个普通字符:
message: Joi.string().regex(/^[^<>#*=+^}\[\]]+$/).required()
以上两种写法都能正确校验不包含<>#*=+^}]这些特殊字符的字符串,且不会触发IDE的语法错误提示。
内容的提问来源于stack exchange,提问作者Pierre Abi Chedid
相关产品推荐
相关产品推荐

