JS - 正则数字没有前导零,或者只是零

问题描述 投票:1回答:1

我正在尝试为货币写一个正则表达式(没有逗号或$符号或句点;只是整数),但我正在敲墙。

我需要一个数字(作为字符串)来匹配要验证的模式。

以下是我需要的: 1.数字可以是单个零 2.数字不能有前导零

有效输入:0 12345 1230

无效:00 012345

到目前为止我所拥有的:

var regex = '^(?!00)([1-9][0-9]*)$';

var testCases = ['0', '12345', '0123', '456', '12340', '00123'];

for (var i in testCases) {
  var result = (testCases[i]).match(new RegExp(regex));
  
  var div = document.createElement('div');
  var textNode = document.createTextNode(testCases[i] + ': ' + !!result);
  div.append(textNode);
  document.querySelector('#results').appendChild(div);
}
<div id='results'></div>

唯一缺少的(我觉得)是唯一的0案件

javascript regex
1个回答
1
投票

使用以下正则表达式:

/^(?:[1-9][0-9]*|0)$/

细节

  • ^ - 字符串的开头
  • (?: - 交替小组的开始: [1-9][0-9]* - 从19的数字,然后是任何0+数字 | - 或 0 - 0
  • ) - 小组结束
  • $ - 字符串的结尾。

regex demo

JS演示:

var regex = /^(?:[1-9][0-9]*|0)$/;
var testCases = ['0', '12345', '0123', '456'];
for (var i in testCases) {
  var result = regex.test(testCases[i]); 
  console.log(testCases[i] + ': ' + result);      
}
© www.soinside.com 2019 - 2024. All rights reserved.