gpt4 book ai didi

JavaScript 正则表达式不工作

转载 作者:行者123 更新时间:2023-12-03 03:34:28 24 4
gpt4 key购买 nike

我有以下 JavaScript 代码:

    function checkLegalYear() {
var val = "02/2010";

if (val != '') {
var regEx = new RegExp("^(0[1-9]|1[0-2])/\d{4}$", "g");

if (regEx.test(val)) {
//do something
}
else {
//do something
}
}
}

但是,对于我传递的任何值,我的 regEx 测试始终返回 false (02/2010)。我的代码有问题吗?我已经在各种在线 javascript 编辑器上尝试过这段代码,效果很好。

最佳答案

因为您是从字符串创建正则表达式,所以必须将反斜杠加倍:

var regEx = new RegExp("^(0[1-9]|1[0-2])/\\d{4}$", "g");

当您从字符串开始时,您必须考虑到正则表达式将首先被解析为 JavaScript 字符串常量。字符串常量的语法对正则表达式一无所知,并且它对反斜杠字符有自己的用途。因此,当解析器完成正则表达式字符串时,它看起来会与您查看源代码时有很大不同。您的源字符串看起来像

"^(0[1-9]|1[0-2])/\d{4}$"

但是在字符串解析之后它是

^(0[1-9]|1[0-2])/d{4}$

请注意,\d 现在只是 d

通过加倍反斜杠字符,您可以告诉字符串解析器您希望在字符串值中使用单个实际反斜杠。

这里确实没有理由不使用正则表达式语法:

var regEx = /^(0[1-9]|1[0-2])\/\d{4}$/g;

编辑 - 我还注意到有一个嵌入的“/”字符,如果您使用正则表达式语法,则必须用引号引起来。

关于JavaScript 正则表达式不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6521572/

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