嗨,有人可以幫助我改進此函數的正則表達式以包含負值嗎?按鍵上的正則表達式爲負數的小數點
的功能是:
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}/
驗證在整數7個digist。我想這也接受負值,因此用戶可以插入例如-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
}
的變化是 「功能,如果(鍵== 46)......」
if (key == 46) {
if (field.value == "") return false
regexp = /^[+-]?[0-9]{7}\.[0-9]{2}$/
return regexp.test(field.value)
}
@Ian如何逃脫 - ??
爲什麼要使用正則表達式的關係嗎? 'number <0'對於負值是一個完美的檢查 – SeinopSys
正則表達式是十進制的@SeinopSys,我需要7個整數和最多2個小數 – Marcos
您可以使用不同的方法來驗證這些部分,並且它會更容易維護比基於正則表達式的解決方案。 – SeinopSys