Javascript JS正则表达式的价格
我正在寻找RegEx的价格,但找不到任何完整的例子。 我有以下代码:Javascript JS正则表达式的价格,javascript,regex,Javascript,Regex,我正在寻找RegEx的价格,但找不到任何完整的例子。 我有以下代码: var regex = /^\d+(?:\.\d{3})$/; var numStr = "10.044"; if ( regex.test(numStr) ) { alert("Number is valid"); } else { alert("Number is NOT valid"); } 但它需要改进: 美元部分的长度应为1-3位,且不应以“0”开头(如01.548), 除数字和“
var regex = /^\d+(?:\.\d{3})$/;
var numStr = "10.044";
if ( regex.test(numStr) )
{
alert("Number is valid");
}
else
{
alert("Number is NOT valid");
}
但它需要改进:
美元部分的长度应为1-3位,且不应以“0”开头(如01.548),
除数字和“.”外,整个价格中不允许使用其他字符
“.”后面必须正好有3位数字
也不允许使用零值,例如00.000,如果开始处没有一个或多个零,后面跟着数字1-9,或者整个匹配仅由零和点组成,则可以使用负前瞻检查
^(?!0+[1-9]|[0.]+$)\d{1,3}\.\d{3}$
const pattern=/^(?!0+[1-9]|[0.]+$)\d{1,3}\.\d{3}$/;
["01.548",
"12",
"0.0000",
"12.000",
"12.001",
"1.100",
"1.110",
"0.534"
].forEach(s=>console.log(s+“:“+pattern.test))代码>一个选项是,如果开始处没有一个或多个零后跟数字1-9,或者整个匹配仅由零和点组成,则使用负前瞻检查
^(?!0+[1-9]|[0.]+$)\d{1,3}\.\d{3}$
const pattern=/^(?!0+[1-9]|[0.]+$)\d{1,3}\.\d{3}$/;
["01.548",
"12",
"0.0000",
"12.000",
"12.001",
"1.100",
"1.110",
"0.534"
].forEach(s=>console.log(s+“:“+pattern.test))代码>非正则表达式解决方案如何
function isValid(inputString) {
var number=parseFloat(inputString);
if(isNaN(number)) return false;
if(number>=1000 || number<0) return false; // 1-3 digits of integer part
var number1000=number*1000;
if(number1000!=Math.floor(number1000) && number1000!=Math.ceil(number1000)) return false; // 1-3 digits of float part
return true;
}
函数有效(inputString){
变量编号=parseFloat(inputString);
if(isNaN(number))返回false;
如果(number>=1000 | | number那么非正则表达式解决方案呢
function isValid(inputString) {
var number=parseFloat(inputString);
if(isNaN(number)) return false;
if(number>=1000 || number<0) return false; // 1-3 digits of integer part
var number1000=number*1000;
if(number1000!=Math.floor(number1000) && number1000!=Math.ceil(number1000)) return false; // 1-3 digits of float part
return true;
}
函数有效(inputString){
变量编号=parseFloat(inputString);
if(isNaN(number))返回false;
如果(数字>=1000 | | |数字^([1-9][0-9]{0,2}| 0)\.(?!000)([0-9]{3}){124;([1-9][0-9]{0,2})\.000$
应该可以做到这一点
- 它以0或不以零开头的数字1-3位数开始
- 它以一个非0003位数字结尾
或
- 它以不以零开头的数字1-3开始
- 它以000结尾
^([1-9][0-9]{0,2}0)\.(?!000)([0-9]{3})\.000$([1-9][0-9]{0,2})\.000$
应该可以做到这一点
- 它以0或不以零开头的数字1-3位数开始
- 它以一个非0003位数字结尾
或
- 它以不以零开头的数字1-3开始
- 它以000结尾
小数应该是可选的吗?那1.100
或1.110
呢?0.534
有效吗?那么1.000
有效还是无效?投票结束时“需要详细信息或清晰”。你的问题中有太多的漏洞,引发了几个未回答的问题。为了将来参考,你应该注意这些评论。小数是否应该是可选的?关于1.100
或1.110
呢?0.534
有效吗?因此1.000
有效还是无效?投票结束“需要细节或清晰"。您的问题中有太多的漏洞,导致了几个未回答的问题。为了将来的参考,您应该注意这些评论。12.000应该match@Roland我明白了,我已经更新了模式。不错,但是0.000不应该match@Roland好的,更新不再匹配。12.000应该match@Roland我明白了,我有updated的模式不错,但0.000不应该match@Roland好的,更新不再匹配。根据另一个答案上的评论,“12.000应该匹配”根据另一个答案上的评论,“12.000应该匹配”