gpt4 book ai didi

javascript - 检查模式是否不匹配

转载 作者:行者123 更新时间:2023-11-29 22:11:58 25 4
gpt4 key购买 nike

Regula ,我怎么能有一个与模式不匹配的约束呢?我可以像这样使用 @Pattern:

<input type="text" id="categoryId" data-constraints="@Pattern(regex=/[0-9]-[A-Z]{3}-[0-9]{4}/)" />

但是假设 /[0-9]-[A-Z]{3}-[0-9]{4}/ 是一个“坏”模式,我想让他们输入任何匹配该模式的内容。

在常规 JavaScript 中我可以做到:

if(!/[0-9]-[A-Z]{3}-[0-9]{4}/.test(value)) {
...
}

我如何在 Regula 中执行此操作?

最佳答案

有几种方法可以做到这一点。对于您的情况,您可以使用负面前瞻:

<input type="text" id="categoryId" data-constraints="@Pattern(regex=/^(?!.*[0-9]-[A-Z]{3}-[0-9]{4})/)" />

我不确定对于更复杂的正则表达式它是如何工作的,但如果是这样的话,我想你可以创建一个自定义约束:

regula.custom({
name: "NotPattern",
params: ["regex"],
defaultMessage: "The value must not match {regex}.",
validator: function(params) {
var regex = new RegExp(params["regex"]);
return !regex.test(this.value);
}
});

您甚至可以在验证器函数中使用内置的@Pattern 验证器,如下所示:

regula.custom({
name: "NotPattern",
params: ["regex"],
defaultMessage: "The value must not match {regex}.",
validator: function(params, validator) {
return !validator.pattern(this, params);
}
});

然后你可以像这样在你的输入元素中使用它:

<input type="text" id="categoryId" data-constraints="@NotPattern(regex=/[0-9]-[A-Z]{3}-[0-9]{4}/)" />

我建议采用第二种方法,因为您可以传入内置 @Pattern 验证器支持的参数,例如用于正则表达式标志的 flags。这也是内置验证器的适当反转。

编辑: 我认为将可选参数添加到 @Pattern 可能很有用,这样您就可以反转模式。所以基本上(假设这个功能已经实现)你所要做的就是:

<input type="text" id="categoryId" data-constraints="@Pattern(regex=/[0-9]-[A-Z]{3}-[0-9]{4}/, invert=true)" />

我会把它放在我的待办事项列表中。

关于javascript - 检查模式是否不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17688149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com