Javascript JS正则表达式的价格

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), 除数字和“

我正在寻找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), 除数字和“.”外,整个价格中不允许使用其他字符 “.”后面必须正好有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应该匹配”