仅匹配Javascript样式数字的Javascript正则表达式

仅匹配Javascript样式数字的Javascript正则表达式,javascript,regex,Javascript,Regex,我试图创建一个javascript正则表达式,它只匹配有效的javascript样式数字。更多要求包括支持数字前面的可选减号或加号、小数点和指数符号(如1e-4或1E4),以及指数前面的可选符号 表达式可以接受点前面或后面的数字,但数字不能只是一个点。例如.2和2。是有效的,但不仅仅是点 理想情况下,表达式包含在/^…$/;格式 我得到了一些项目,但我的表达式应该能够传递有效的javascript值,如.5、.5或+5 function validNumber(number) { var

我试图创建一个javascript正则表达式,它只匹配有效的javascript样式数字。更多要求包括支持数字前面的可选减号或加号、小数点和指数符号(如1e-4或1E4),以及指数前面的可选符号

表达式可以接受点前面或后面的数字,但数字不能只是一个点。例如.2和2。是有效的,但不仅仅是点

理想情况下,表达式包含在/^…$/;格式

我得到了一些项目,但我的表达式应该能够传递有效的javascript值,如.5、.5或+5

function validNumber(number) {
    var regexNum = /^-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?$/; 
    return regexNum.test(number);
}

console.log(validNumber("0.0001")); // true
console.log(validNumber("-5")); // true
console.log(validNumber("0.3425")); // true
console.log(validNumber("1e-4")); // true
console.log(validNumber("1E-4")); // true
console.log(validNumber("1Ee-4")); // false
console.log(validNumber("-4.34")); // true
console.log(validNumber("Test123")); // false
console.log(validNumber("+-2")); // false
console.log(validNumber("5.")); // true
console.log(validNumber(".")); // false
console.log(validNumber(".5")); // Should be true, but passes as false
console.log(validNumber("-.5")); // Should be true, but passes as false
console.log(validNumber("+5"));  // Should be true, but passes as false

有什么建议吗

请检查下面的正则表达式好吗

var模式=新的RegExp((^([-|+])([0-9]{0,12}?)(\)([0-9]){0,12}$)|(^([-|+])([0-9]){0,12}$)

您可以使用

/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)(?:[eE][-+]?[0-9]+)?$/

详细信息

  • ^
    -字符串的开头
  • [-+]?
    -可选的
    +
    -
    符号
  • (?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)
    -两个序列中的任意一个:
    • \.[0-9]+
      -一个点和1+个数字
    • |
      -或
    • [0-9]+(?:\[0-9]*)?
      -1+位,然后是一个可选的
      序列,后跟0+位
  • (?:[eE][-+]?[0-9]+)?
    -可选指数部分:
    • [eE]
      -一个
      e
      e
    • [-+]?
      -可选的加号或减号
    • [0-9]+
      -1位或更多数字
  • $
    -字符串结束
var regexNum=/^[-+]?(?:\[0-9]+[0-9]+(?:\[0-9]*))(?:[eE][-+]?[0-9]+)?$/;
函数validNumber(编号){
返回regexNum.test(编号);
}
console.log(“0.0001”,validNumber(“0.0001”);//真的
console.log(“-5”,validNumber(“-5”);//真的
console.log(“0.3425”,validNumber(“0.3425”);//真的
console.log(“1e-4”,validNumber(“1e-4”);//真的
console.log(“1E-4”,validNumber(“1E-4”);//真的
console.log(“1Ee-4”,validNumber(“1Ee-4”);//假的
console.log(“-4.34”,validNumber(“-4.34”);//真的
console.log(“Test123”,validNumber(“Test123”);//假的
console.log(“+-2”,validNumber(“+-2”);//假的
console.log(“5”),validNumber(“5”);//真的
console.log(“.”,validNumber(“.”);//假的
console.log(“.5”,validNumber(“.5”);//应该是真的,但传递为假
console.log(“-.5”,validNumber(“-.5”);//应该是真的,但传递为假

控制台日志(“+5”,有效编号(“+5”)
Try
/^[+-]?\d*\.?\d+(?:[eE][+-]?\d+)$/
您可以在上测试正则表达式,我已将您的测试复制到这里
alert(0x5f+0b10101)