我正在尝试为货币写一个正则表达式(没有逗号或$符号或句点;只是整数),但我正在打一堵墙。
我需要一个数字(作为字符串)来匹配要验证的模式。
以下是我的需要:
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>
&#13;
唯一缺少的(我觉得)是传递唯一的0个案例
答案 0 :(得分:1)
使用以下正则表达式:
/^(?:[1-9][0-9]*|0)$/
<强>详情
^
- 字符串开头(?:
- 替换组的开始:
[1-9][0-9]*
- 从1
到9
的数字,然后是任意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);
}
&#13;