Javascript jQuery中价格的正则表达式 $('#price').keyup(函数(){ $('#price').val($('#price').val().replace(',','); })
演示:Javascript jQuery中价格的正则表达式 $('#price').keyup(函数(){ $('#price').val($('#price').val().replace(',','); }),javascript,jquery,regex,Javascript,Jquery,Regex,演示: 这将,替换为。这是可以的,但是我想用NULL替换所有不是数字的字符。如何使用正则表达式实现这一点?您可能想看看,但具体要求是: <input type="text" id="price" /> $('#price').keyup(function(){ $('#price').val($('#price').val().replace(',', '.')); }) 您可能想看一看,但具体要求是: <input type="text" id="pric
这将
,
替换为
。这是可以的,但是我想用NULL替换所有不是数字的字符。如何使用正则表达式实现这一点?您可能想看看,但具体要求是:
<input type="text" id="price" />
$('#price').keyup(function(){
$('#price').val($('#price').val().replace(',', '.'));
})
您可能想看一看,但具体要求是:
<input type="text" id="price" />
$('#price').keyup(function(){
$('#price').val($('#price').val().replace(',', '.'));
})
从可用性的角度来看,猜测用户想要什么或不想要什么,然后尝试纠正这些错误是没有意义的。只需使用如下模式:
.replace( /[^0-9.]/g, '' )
现代浏览器将根据模式验证输入字段,您可以使用$(this).attr(“模式”)
对其进行验证
现在,如果不匹配,只需提示用户友好地更正他们的输入
以最简单的形式,它可能看起来像。它只需对输入(,->)进行简单的替换(如果您使用模式
“\d+[,]\d\d”
,然后根据自己的喜好对其进行更正,则可能不需要这样做),然后尝试验证。如果失败,用户将无法提交,并被提示更正其输入 从可用性的角度来看,猜测用户想要什么或不想要什么,然后尝试纠正这些错误是没有意义的。只需使用如下模式:
.replace( /[^0-9.]/g, '' )
现代浏览器将根据模式验证输入字段,您可以使用$(this).attr(“模式”)
对其进行验证
现在,如果不匹配,只需提示用户友好地更正他们的输入
以最简单的形式,它可能看起来像。它只需对输入(,->)进行简单的替换(如果您使用模式
“\d+[,]\d\d”
,然后根据自己的喜好对其进行更正,则可能不需要这样做),然后尝试验证。如果失败,用户将无法提交,并被提示更正其输入 为什么在用户仍在键入时添加字符(小数点后的字符)?这真的没有帮助用户,这是一个恼人和障碍。完成后添加字符/填充字符串(blur()
)。@DavidThomas你说得对,我编辑了我的回答为什么在用户仍在键入时添加字符(小数点后的字符)?这真的没有帮助用户,这是一个恼人和障碍。完成后添加字符/填充字符串(blur()
)。@DavidThomas你说得对,我编辑了我的answer@raam86--不,我想有选择地匹配2个小数,而不是多次匹配。你能再解释一下这个图案吗?匹配任意数量的小数,然后(一个点,最多2个小数)——这一块是optional@raam86--不,我想有选择地匹配2个小数,而不是多次匹配。你能再解释一下这个模式吗?匹配任意数量的小数,然后(一个点,最多2个小数)--只要你不关心IE9,这一块是可选的。。。像这样的建议真的应该总是附带免责声明,否则人们会盲目地遵循它们,而不知道它在哪里会/不会起作用什么阻碍了你使用该模式在不知道如何处理的浏览器中手动验证输入?顺便说一句,这就是我在回答中写的。只要你不在乎IE9。。。像这样的建议真的应该总是附带免责声明,否则人们会盲目地遵循它们,而不知道它在哪里会/不会起作用什么阻碍了你使用该模式在不知道如何处理的浏览器中手动验证输入?顺便说一句,这就是我在回答中写的。