Javascript 接受百分比值的正则表达式验证

Javascript 接受百分比值的正则表达式验证,javascript,jquery,regex,validation,Javascript,Jquery,Regex,Validation,我使用正则表达式来验证输入数据,用户数据应该是带小数或不带小数的百分比,所以我使用正则表达式,但它不工作,并且在控制台中不显示错误我想知道是否没有错误为什么这个脚本不工作 预期输出(仅允许以下格式):数字可以是1-100 12.5%//1-100之间的任意数字 12% 12.45% $(“#百分比”).bind('keydown-keypress-keypup',on); 功能开启(evt){ var theEvent=evt | | window.event; var key=theEv

我使用正则表达式来验证输入数据,用户数据应该是带小数或不带小数的百分比,所以我使用正则表达式,但它不工作,并且在控制台中不显示错误我想知道是否没有错误为什么这个脚本不工作

预期输出(仅允许以下格式):数字可以是1-100

  • 12.5%//1-100之间的任意数字
  • 12%
  • 12.45%
$(“#百分比”).bind('keydown-keypress-keypup',on);
功能开启(evt){
var theEvent=evt | | window.event;
var key=theEvent.keyCode | | theEvent.which;
key=String.fromCharCode(key);
var regex=/^((100)|(\d{1,2}(\.\d*)?)%$/;
如果(!正则表达式测试(键)){
theEvent.returnValue=false;
如果(theEvent.preventDefault)theEvent.preventDefault();
}
}


百分比:
您需要检查
#Percentage
文本框的值,而不仅仅是上次按下的键

因此:
if(!regex.test($('#percentage').value()){


或者类似于这些行的内容

您需要检查
#percentage
文本框的值,而不仅仅是上次按下的键

因此:
if(!regex.test($('#percentage').value()){


或者类似于这些内容的东西

我假设您正在寻找简单的值检查,将事件放在一边。 我的收集您需要检查值是否有%符号,其次,如果除%符号以外的值是十进制值的数目。现在这是两个条件

条件一检查

if (!n.includes("%")||n.split('.').length > 2){return;}
这是对正则表达式的一种短路替换,用于检查字符串是否包含您需要的任何值。如果它不简单地返回函数。除此之外,它还可以快速检查字符串是否只包含单个字符。我们不希望有人使用5.5.5.5.5%。如果它不简单地返回函数。5%将正常工作l 5.5%

一旦有%符号性别歧视者,则从值中删除%符号

完成后,只需检查
Math.ceil(parseFloat(x))
它所做的一切就是将值四舍五入。如果它返回数字wala,那么它就起作用了。我刚刚创建了一个警报,从那以后,你可以做任何你想做的事情

功能检查(n){
如果(!n.includes(“%”)| | n.split('.').length>2){return;}
x=n。替换(“%”,为“”);
if(Math.ceil(parseFloat(x)){console.log(x);}
}

我假设您正在寻找简单的值检查,将事件放在一边。 我的收集您需要检查值是否有%符号,其次,如果除%符号以外的值是十进制值的数目。现在这是两个条件

条件一检查

if (!n.includes("%")||n.split('.').length > 2){return;}
这是对正则表达式的一种短路替换,用于检查字符串是否包含您需要的任何值。如果它不简单地返回函数。除此之外,它还可以快速检查字符串是否只包含单个字符。我们不希望有人使用5.5.5.5.5%。如果它不简单地返回函数。5%将正常工作l 5.5%

一旦有%符号性别歧视者,则从值中删除%符号

完成后,只需检查
Math.ceil(parseFloat(x))
它所做的一切就是将值四舍五入。如果它返回数字wala,那么它就起作用了。我刚刚创建了一个警报,从那以后,你可以做任何你想做的事情

功能检查(n){
如果(!n.includes(“%”)| | n.split('.').length>2){return;}
x=n。替换(“%”,为“”);
if(Math.ceil(parseFloat(x)){console.log(x);}
}

为了验证输入,您应该收听
键向上
事件,并检查按下该键时输入的值

const main=()=>{
$(“#百分比”).bind({
focusin:onFocusIn,
keyup:onChange
});
};
const onFocusIn=(e)=>{
const$target=$(e.currentTarget);
$target.data('val',$target.val());
};
const onChange=(e)=>{
常量正则表达式=/^((100)|(\d{1,2}(\.\d*)?)%?$/,
$target=$(e.currentTarget),
value=$target.val(),
event=e | | window.event,
keyCode=event.keyCode | | event.which,
isValid=value.trim().length==0||
(keyInRange(keyCode)和正则表达式测试(value));
如果(!isValid){
$target.val($target.data('val'));
event.preventDefault();
}否则{
$target.data('val',value);
}
};
常量keyirange=(keyCode)=>

(keyCode>=48&&keyCode=96&&keyCode为了验证输入,您应该收听
keyup
事件,并检查按下该键时的输入值

const main=()=>{
$(“#百分比”).bind({
focusin:onFocusIn,
keyup:onChange
});
};
const onFocusIn=(e)=>{
const$target=$(e.currentTarget);
$target.data('val',$target.val());
};
const onChange=(e)=>{
常量正则表达式=/^((100)|(\d{1,2}(\.\d*)?)%?$/,
$target=$(e.currentTarget),
value=$target.val(),
event=e | | window.event,
keyCode=event.keyCode | | event.which,
isValid=value.trim().length==0||
(keyInRange(keyCode)和正则表达式测试(value));
如果(!isValid){
$target.val($target.data('val'));
event.preventDefault();
}否则{
$target.data('val',value);
}
};
常量keyirange=(keyCode)=>

(keyCode>=48&&keyCode=96&&keyCode您在错误的位置上使用了regex。您正在测试每次按下的键是否附加了一个%。这对用户输入不起作用。另一方面,根据您希望验证/交互的发生方式,有时在字段上绑定
更改
事件更为简单而不是按键事件。您在错误的位置使用了正则表达式。您正在测试每次按下的按键是否都附加了一个%。这对用户输入不起作用。另一方面,根据您希望验证/交互发生的方式,有时在字段上绑定
更改
事件比按键更简单谢谢你完美的回答,我是乌纳