gpt4 book ai didi

javascript - 为什么这个正则表达式在 javascript 中评估为 false?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:02:38 25 4
gpt4 key购买 nike

我正在寻找一个 0-9 位数字的字符串,没有其他字符。

这是用“错误”值提醒我:

var regex = new RegExp('^[\d]{0,9}$');
alert(regex.test('123456789'));

这些返回 true,我明白为什么(^ 和 $ 表示整个字符串需要匹配,而不仅仅是字符串内的匹配):

var regex = new RegExp('[\d]{0,9}');
alert(regex.test('123456789'));

-

var regex = new RegExp('[\d]{0,9}');
alert(regex.test('12345678934341243124'));

这会返回 true:

var regex = new RegExp('^[\d]{0,9}');
alert(regex.test('123456789'));

那么为什么,当我在末尾添加“$”时,这可能会失败?

我需要做什么来修复它?

最佳答案

当你使用

var regex = new RegExp('^[\d]{0,9}$');

语法,你会得到正则表达式作为

/^[d]{0,9}$/

注意 \d 变成了 d

此正则表达式 /^[d]{0,9}$/ 将仅匹配 d 零到九次。

RegExp 使用字符串来定义正则表达式,\ 也被用作字符串中的转义符号,所以 \\d 被认为是转义字符。

通过在 \ 前面加上另一个 \ 来转义 \

var regex = new RegExp('^[\\d]{0,9}$');

我建议您使用正则表达式语法而不是令人困惑的 RegExp 语法。

var regex = /^\d{0,9}$/;

编辑:

使用 var regex = new RegExp('^[\d]{0,9}'); 时得到 true 的原因是因为正则表达式暗示字符串应以 任意d 开头,包括零到九。因此,当字符串不以 d 开头时,条件会分层,因为 0 是最小出现次数。

您可能想检查字符串是否以一到九位数字开头。

var regex = /^\d{1,9}$/;

关于javascript - 为什么这个正则表达式在 javascript 中评估为 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32891576/

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