gpt4 book ai didi

javascript - 没有 "cutting into"的完全已知模式的正则表达式字符串不起作用

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

我目前正在开发一个网络应用程序,我在其中使用 java、javascript、html、jquery 等。在某些时候,我需要检查输入是否与已知模式匹配,并且只有在匹配时才继续。

模式应该是[至少一个但最多 3 个 0-9 之间的数字]/[恰好 4 个 0-9 之间的数字],所以唯一可接受的变化应该是这样的

1/201423/2015123/2016

没有别的,我不能接受像 1234/3012 或其他任何东西,这就是我的问题,它接受它可以找到上述模式的所有东西,比如来自12345/6789 它接受并保存 345/6789

我是正则表达式的新手,所以我查看了 http://regexr.com这是我在 javascript 中的代码:

$.validator.addMethod("hatarozat", function(value, element) {
return (this.optional(element) || /[0-9]{1,3}(?:\/)[0-9]{4}/i.test(value));
}, "Hibás határozat szám!");

所以这是我的正则表达式:/[0-9]{1,3}(?:\/)[0-9]{4}/i我使用上述网站建立的。可能是什么问题,或者我怎样才能实现我所描述的?我尝试了 /^[0-9]{1,3}(?:\/)[0-9]{4}$/i 但这似乎不起作用,请任何人帮忙我,我已经完成了所有其他事情,并且对看起来如此简单但我无法解决的事情感到非常压力。谢谢!

最佳答案

您最后一个带有 anchor (^$)的正则表达式是正确的正则表达式。阻止您的代码工作的是 this.optional(element) ||。由于这是一个静态的东西,并且可能是真的,所以它不会显示任何错误(因为 || 是一个 OR 条件,如果第一个为真,则整体返回真,正则表达式不是完全检查过)。

所以,使用

return /^[0-9]{1,3}\/[0-9]{4}$/.test(value);

请注意,您不需要 (?:...)\/,因为分组在这里没有做任何重要的事情,只是多余的。 anchor 很重要,因为您希望整个字符串匹配模式(并且 ^ 将正则表达式锚定在字符串的开头,而 $ 在字符串的末尾执行此操作字符串。)

关于javascript - 没有 "cutting into"的完全已知模式的正则表达式字符串不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42760724/

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