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