我正在尝试找到一个正则表达式代码来禁用用户输入的负数。 我正在玩代码abit试图找到合适的代码,但没有取得多大成功。
我目前的代码是:
Price: ko.observable().extend({
required: true,
pattern: '^[0-9].$'
})
答案 0 :(得分:0)
您可以使用数字组\ d
pattern: '^\d+\.?$'
符合以下条件:
以下是一些匹配示例:" 34"," 5"," 45687654"," 1。",&# 34; 198289"
我注意到你说你想避免负数,你的解决方案是将数字压缩到行的开头和结尾。您还可以使用负向lookbehind来检查该数字是否没有负号,例如
pattern: '(?<!-)\b\d+\.?'
我还添加了一个单词边界检查(\b
),这样就不会尝试匹配-123中的23
答案 1 :(得分:0)
在这种情况下,为什么您需要允许用户在输入字段中输入减号并根据负数验证输入?
相反,您可以阻止用户输入负数/字符串。
这使用JavaScript,但您不必编写自己的验证例程。而只需检查validity.valid
属性。当且仅当输入在范围内时才会出现这种情况。
解决方案1:
<html>
<body>
<form action="#">
<input type="number" name="test" min=0 oninput="validity.valid||(value='');">
</form>
</body>
</html>
&#13;
解决方案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)
&#13;
<input type="number" min="0" />
&#13;
解决方案3:
我还没有测试过以下的解决方案,但这也有帮助......
'/^\d+$/'
或'^\d+$'
模式可以帮助您实现当前的方法。
Price: ko.observable().extend({
required: true,
pattern: '/^\d+$/'
})
Original Solution and Reference here ..
希望这会有所帮助......