我正在尝试创建一个只匹配有效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
有什么建议吗?
答案 0 :(得分:1)
您可以使用
/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)(?:[eE][-+]?[0-9]+)?$/
请参阅regex demo
<强>详情
^
- 字符串开头[-+]?
- 可选的+
或-
符号(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)
- 两个序列中的任何一个:
\.[0-9]+
- 一个点和一个以上的数字|
- 或[0-9]+(?:\.[0-9]*)?
- 1位数字,然后是.
的可选序列,后跟0+位数(?:[eE][-+]?[0-9]+)?
- 可选的指数部分:
[eE]
- e
或E
[-+]?
- 可选的加号或减号[0-9]+
- 一位或多位$
- 字符串结束。
var regexNum = /^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)(?:[eE][-+]?[0-9]+)?$/;
function validNumber(number) {
return regexNum.test(number);
}
console.log("0.0001", validNumber("0.0001")); // true
console.log("-5", validNumber("-5")); // true
console.log("0.3425", validNumber("0.3425")); // true
console.log("1e-4", validNumber("1e-4")); // true
console.log("1E-4", validNumber("1E-4")); // true
console.log("1Ee-4", validNumber("1Ee-4")); // false
console.log("-4.34", validNumber("-4.34")); // true
console.log("Test123", validNumber("Test123")); // false
console.log("+-2", validNumber("+-2")); // false
console.log("5.", validNumber("5.")); // true
console.log(".", validNumber(".")); // false
console.log(".5", validNumber(".5")); // Should be true, but passes as false
console.log("-.5", validNumber("-.5")); // Should be true, but passes as false
console.log("+5", validNumber("+5"));
&#13;
答案 1 :(得分:0)
请查看下面的正则表达式吗?
var pattern = new RegExp(“(^([ - | +]?)([0-9] {0,12}?)(\。)([0-9]){0,12} $ )|(^([ - | +])([0-9]){0,12} $)“);