输入字段可以包含以下值:
23
23-45
不,我想更正价值:
string.replace(/[^\d-]/g,'');
但这并没有纠正这些价值观:
-45
23-
45-23
10-110
所有这些值都不正确(有效值为0-100(因为它们是百分比值),因此110无效)。因此,对于这种情况,我希望用户再次查看输入字段...
我想我必须为这些无效的案例创建第二个RegEx,对吗?
答案 0 :(得分:1)
如果百分比由整数表示,则返回true的函数,如果包含破折号,则第一个数字小于第二个,并且两个数字都在0到100之间:
function isValidPercentage(input) {
var mat = /^(\d+)(?:-(\d+))?$/.exec(input + "");
if (mat !== null && ((mat[2] === undefined && mat[1] < 101) || (mat[1] < mat[2] && mat[2] < 101))) {
return true;
}
return false;
}
编辑#1:如果任一数字大于100
,则强制返回错误编辑#2:修正了错误,稍微清理了代码
答案 1 :(得分:0)
假设您有输入(#perc)和按钮(#calc),请尝试:
document.querySelector('#calc').addEventListener('click', calculate);
function calculate() {
// replace all non numeric values in the input with nothing
// and convert it to a Number (using the + operator).
var value = +(document.querySelector('#perc').value.replace(/[^\d]/g, ''));
// now you can check the value
alert( !isNaN(value) && value >= 0 && value <= 100
? 'ok ' + value
: 'not ok ' + value );
}
SO内联代码插入器无法正常工作,因此您必须自己尝试。