我想找到一個正則表達式代碼來禁用用戶輸入的負數。 我玩代碼升技試圖找到正確的,但沒有太大的成功。淘汰賽Js正則表達式無負數
我當前的代碼是:
Price: ko.observable().extend({
required: true,
pattern: '^[0-9].$'
})
我想找到一個正則表達式代碼來禁用用戶輸入的負數。 我玩代碼升技試圖找到正確的,但沒有太大的成功。淘汰賽Js正則表達式無負數
我當前的代碼是:
Price: ko.observable().extend({
required: true,
pattern: '^[0-9].$'
})
在這種情況下,爲什麼您需要允許用戶在輸入字段中輸入負號,並根據負數驗證輸入?
相反,您可以防止用戶輸入負數/字符串。
這使用JavaScript,但您不必編寫自己的驗證例程。相反,只需檢查validity.valid
屬性。當且僅當輸入落在範圍內時,這纔是真實的。
解決方案1:
<html>
<body>
<form action="#">
<input type="number" name="test" min=0 oninput="validity.valid||(value='');">
</form>
</body>
</html>
解決方案2:
以下解決方案支持驗證多個輸入。
// Select your input element.
var numInput = document.querySelector('input');
// Listen for input event on numInput.
numInput.addEventListener('input', function(){
// Let's match only digits.
var num = this.value.match(/^\d+$/);
if (num === null) {
// If we have no match, value will be empty.
this.value = "";
}
}, false)
<input type="number" min="0" />
解決方案3:
我沒有測試過下面的解決方案,但是這可能會有所幫助...
'/^\d+$/'
或'^\d+$'
模式可能會幫助您與當前的方法。
Price: ko.observable().extend({
required: true,
pattern: '/^\d+$/'
})
Original Solution and Reference here ..
希望這有助於...
您可以使用數字組\ d
pattern: '^\d+\.?$'
這符合以下幾點:
這裏的結束端匹配的一些例子: 「34」, 「5」, 「45687654」, 「1」,「198289。 「
我注意到你說你想避免負數,你的解決方案是擠壓數字到行的開始和結束。您也可以使用負回顧後,檢查該號碼沒有一個負號,如用
pattern: '(?<!-)\b\d+\.?'
我還添加了一個字邊界檢查(\b
)從而不會試圖以匹配23 -123
是那個時期應該是一個小數?任何數字都可以跟隨小數嗎? – 2017-07-26 02:05:17
我不確定您的期限是什麼意思。它可以是小數,只要其數字1和以上 – harpreet
您可以使用這個有用的正則表達式測試器:https://regex101.com/ –