gpt4 book ai didi

javascript - RegEx 作为 if else 语句中的条件返回意外结果

转载 作者:行者123 更新时间:2023-12-01 02:15:55 25 4
gpt4 key购买 nike

我想将一个参数传递给一个函数,并检查该参数是否由一个或两个字母或数字组成。如果是,则计算为 true,如果不是,则计算为 false

必须计算为 true 的参数为 'PP'、'P'、'M'、'G'、'GG'、'XS'、'S'、 'L'、'XL' 以及从 '30''50' 的数字范围,但可能还有更多。它们的共同点是:它们的字符永远不会超过 2 个,所以我想出了这个正则表达式,但我不确定这是否是 100%。

/^[0-9]{1,2}$/gi.test('09');   // returns 'true'
/^[a-z]{1,2}$/gi.test('AZ'); // returns 'true'
/^[0-9]{1,2}$/gi.test('Word'); // returns 'false'
/^[a-z]{1,2}$/gi.test('Word'); // returns 'false'

它们本身就可以很好地工作。但是当我在 if...else 语句中使用它时,我没有得到预期的结果:

function example(value) {
if (value === /^[0-9]{1,2}$/gi.test(value) || /^[a-z]{1,2}$/gi.test(value) ) {
// do stuff...
} else {
// do other stuff...
}
}

example('AA'); // returns 'true'
example('99'); // returns 'false', expected 'true'
example('Word'); // returns 'false'

我错了什么?另外,我该如何改进这段代码?

最佳答案

你的逻辑不正确。在您正在测试的 if 语句中:

value === /^[0-9]{1,2}$/gi.test(value)

这相当于:

'99' === /^[0-9]{1,2}$/gi.test('99')

这相当于:

'99' === true

这是错误

您只需取出value ===部分即可。

关于javascript - RegEx 作为 if else 语句中的条件返回意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49501925/

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