你可以帮助我改进这个函数的正则表达式以包含负值吗?
功能是:
function Validate7EntY2Dec(e, field) {
key = e.keyCode ? e.keyCode : e.which
// backspace
if (key == 8) return true
// 0-9 a partir del .decimal
if (field.value != "") {
if ((field.value.indexOf(".")) > 0) {
if (key > 47 && key < 58) {
if (field.value == "") return true
regexp = /[0-9]{2}$/
return !(regexp.test(field.value))
}
}
}
// 0-9
if (key > 47 && key < 58) {
if (field.value == "") return true
regexp = /[0-9]{7}/
return !(regexp.test(field.value))
}
// .
if (key == 46) {
if (field.value == "") return false
regexp = /^[0-9]+$/
return regexp.test(field.value)
}
// other key
return false
}
据我所知/[0-9]{2}$/
验证小数点后的两位数,/[0-9]{7}/
验证整数中的七位数字。我希望这也接受负值,以便用户可以插入-1234567.12
例如。
我在其他问题上找到了这个正则表达式^[+-]?[0-9]{1,9}(?:\.[0-9]{1,2})?$
,但不知道如何在我的函数中插入。
还发现在-
上添加/[0-9]{7}/
会接受负值,但它没有,我这样做了:/[-0-9]{7}/
我需要保留我的功能,因为它已经被使用过了。
提前谢谢你!
编辑:
在@Ian推荐之后,我的代码是这样的:
function Validate7EntY2Dec_Neg(e, field) {
key = e.keyCode ? e.keyCode : e.which
// backspace
if (key == 8) return true
// 0-9 a partir del .decimal
if (field.value != "") {
if ((field.value.indexOf(".")) > 0) {
if (key > 47 && key < 58) {
if (field.value == "") return true
regexp = /[0-9]{2}$/
return !(regexp.test(field.value))
}
}
}
// 0-9
if (key > 47 && key < 58) {
if (field.value == "") return true
regexp = /[0-9]{7}/
return !(regexp.test(field.value))
}
// .
if (key == 46) {
if (field.value == "") return false
regexp = /^[+-]?[0-9]{7}\.[0-9]{2}$/
return regexp.test(field.value)
}
// other key
return false
}
更改是“函数if(key == 46)...”
if (key == 46) {
if (field.value == "") return false
regexp = /^[+-]?[0-9]{7}\.[0-9]{2}$/
return regexp.test(field.value)
}
@Ian怎么逃避 - ??
答案 0 :(得分:0)
^ [+ - ]?[0-9] {7} \。[0-9] {2} $应该有效。插入符号强制开始字符串,美元结束。我也强迫一个7.2位的数字,我认为这就是你想要的。还有可选的+/-开头。
答案 1 :(得分:0)
我建议你不要再担心按键,并在每次更改时验证整个字段。我相信这不会导致任何性能问题,并且会极大地提高代码的可维护性。
然后我会提出以下代码:
function Validate7EntY2Dec_Neg(e, field) {
return /^[+-]?[0-9]{7}\.[0-9]{2}$/.test(field.value);
}