Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Java脚本Regex^[^0]\d{1,4}$_Javascript_Regex - Fatal编程技术网

Javascript Java脚本Regex^[^0]\d{1,4}$

Javascript Java脚本Regex^[^0]\d{1,4}$,javascript,regex,Javascript,Regex,我想使用JavaScript中的正则表达式,将一个数字与1到4位数字进行匹配,而不是以0开头。我试过: ^[^0]\d{1,4}$ 但这不起作用 JavaScript中的{1,4}有问题吗? 它应该检查数字是否匹配1到4次,不是吗?请给我们看不起作用的代码 这就是您现在正在做的: 一个字符不是0 一到四个十进制字符 数字 所以你可以产生5个数字。你必须纠正这一点。如果您提供代码和上下文,我们可以帮助您。您的正则表达式不正确。Javascript中没有问题 这是您想要的正则表达式: ^[1-

我想使用JavaScript中的正则表达式,将一个数字与1到4位数字进行匹配,而不是以0开头。我试过:

^[^0]\d{1,4}$
但这不起作用

JavaScript中的
{1,4}
有问题吗?
它应该检查数字是否匹配1到4次,不是吗?

请给我们看不起作用的代码

这就是您现在正在做的:

  • 一个字符不是
    0
  • 一到四个十进制字符 数字

所以你可以产生5个数字。你必须纠正这一点。如果您提供代码和上下文,我们可以帮助您。

您的正则表达式不正确。Javascript中没有问题

这是您想要的正则表达式:

^[1-9]\d{0,3}$
基本上:

  • [1-9]
    匹配任何非
    0
  • \d{0,3}
    将最多再匹配3个数字,从0到9
您拥有的正则表达式将与以下内容匹配:

  • Z000
  • .123
  • -111
为什么您的正则表达式不起作用
^[^0]\d{1,4}$
表示除0后接1到4位之外的任何内容。因此,以下内容将匹配:

  • A6789
  • Z0

解决方案 如果您想要任何1到4位数字,但不以0开头,则需要:

^[1-9]\d{0,3}$
^(?!0)\d{1,4}$

这将匹配:

  • 1234
  • 五,
  • 九十九
但不是:

  • 0123
  • 005
  • 12345
  • Z123

为什么解决方案有效
(?!0)
是一个否定的前瞻,它断言字符串不以包含的模式开头,在这种情况下,
0

[^0]
意味着-除
0
^\d{1,4}$
之外的任何字符都应该适用于您。使用@nilsK测试,我不希望第一位数字为0。请更准确地回答您的问题。慢慢来,回答你问题的人也在这么做。无意冒犯,但如果你问自己为什么投票失败,这可能是你的答案。或者只是
^[1-9]\d{0,3}$
,这既快又容易理解。但我明白你为什么选择消极的低头。但是永远都不会只有一个正确的解决方案,你应该为另一种方法得到+1。这很公平@IsmaelMiguel,但我个人觉得消极的前瞻更容易阅读。但是+1表示另一个完美的方法。我在问自己:“为什么这些”中的“任何”比“不是这个”快?@nilsK你是什么意思?@nilsK
[1-9]
检查字符是否在该字符范围内。这相当于
(?:1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9)
,但速度更快。前瞻性具有一定的性能影响,因为它必须查看下一个角色,使用捕获组匹配其中的模式,然后才匹配下一个模式。你认为什么更快?例如,检查
6
是否在
1
9
之间,或者检查它是否不是
0
,然后检查它是否在
0
9
之间(
\d
相当于
[0-9]
)?