Java Script Regex ^ [^ 0]\d {1,4} $

Pey*_*ahy -3 javascript regex

我希望使用JavaScript中的正则表达式匹配1到4位数的数字,该数字不以0开头.我试过了:

^[^0]\d{1,4}$
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

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

tho*_*dic 7

为什么你的正则表达式不起作用

^[^0]\d{1,4}$表示除0后跟1到4位数字之外的任何内容.因此,以下内容将匹配:

  • A6789
  • Z0

解决方案

如果您想要任何1到4位数字但没有开始0,您需要:

^(?!0)\d{1,4}$

这将匹配:

  • 1234
  • 99

但不是:

  • 0123
  • 005
  • 12345
  • Z123

为何解决方案有效

(?!0)在这种情况下,断言字符串不以包含的模式开头,这是一个否定的前瞻0.

  • 或者只是`^ [1-9]\d {0,3} $`,这既快又容易理解.但我明白为什么你选择负面的lokahead.但是,从来没有只有一个正确的解决方案,你应该为不同的方法+1. (4认同)

Ism*_*uel 6

你的正则表达式是不正确的.Javascript没有问题.

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

^[1-9]\d{0,3}$
Run Code Online (Sandbox Code Playgroud)

基本上:

  • [1-9] 匹配任何不是的数字 0
  • \d{0,3} 将匹配最多3个数字,从0到9

你有的正则表达式将匹配这些:

  • Z000
  • .123
  • -111
  • ...