我試圖通過檢查字串是否是帶有逗號和句點的正確數字來驗證我的輸入欄位,如果是,則獲取值
我嘗試了兩個功能都沒有按預期作業:
function isNumeric(str) {
console.log(parseFloat(str.replace(/,/g,'')))
return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...
!isNaN(parseFloat(str)) // ...and ensure strings of whitespace fail
}
const isValidNumber = (str) => {
console.log(parseFloat(str.replace(/,/g,'')))
// return /^[0-9,.]*$/.test(str);
return /^\d{0,4}(?:[.,]\d{1,3})?$/.test(str)
// return /^[0-9,]?.[0-9]/.test(str);
// return /([0-9,.] )$/.test(str)
}
我準備的測驗用例
console.log(isNumeric("2"))//true
console.log(isNumeric("2,00,000"))//true
console.log(isNumeric("2,7,5,.34"))//false
console.log(isNumeric("2,450,0000.22.22"))//false
console.log(isNumeric("2q,3,4"))//false
但它沒有按預期作業,我需要一個正則運算式來解決這個問題。還需要檢查是否parseFloat(str.replace(/,/g,''))是提取價值的正確方法
uj5u.com熱心網友回復:
這是一個通用的正則運算式模式,用于將數字與正確的千位分隔符和可選的小數部分進行匹配:
\d{1,3}(?:,\d{3})*(?:\.\d )?
function isNumeric(input) {
return /^\d{1,3}(?:,\d{3})*(?:\.\d )?$/.test(input);
}
console.log(isNumeric("2")); // true
console.log(isNumeric("2,000,000")); // true
console.log(isNumeric("3.14159")); // true
console.log(isNumeric("2,7,5,.34")); // false
console.log(isNumeric("2,450,0000.22.22")); // false
console.log(isNumeric("2q,3,4")); // false
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/336562.html
標籤:javascript 正则表达式
上一篇:反應組件渲染中的物件迭代不起作用
