正则表达式在jQuery中的价格

时间:2013-06-15 19:36:49

标签: javascript jquery regex

<input type="text" id="price" />

$('#price').keyup(function(){
        $('#price').val($('#price').val().replace(',', '.'));
})

演示:http://jsfiddle.net/2KRHh/1/

这会将,替换为.。这没关系,但我想用NULL替换所有不是数字的字符。我怎么能用正则表达式做到这一点?

2 个答案:

答案 0 :(得分:3)

从可用性的角度来看,猜测用户可能想要的是什么并没有多大意义,然后尝试纠正这些错误。只需使用以下模式:

<input class="" type="text" id="price" pattern="\d+\.\d\d"/>

现代浏览器将根据模式验证输入字段,您也可以使用$(this).attr("pattern")对其进行验证。

现在如果它不匹配,只需提示用户改正他们的输入。

以最简单的形式,它可能看起来像following example。它只是对输入进行简单替换(, - &gt ;.)(如果您使用模式"\d+[.,]\d\d"并且之后根据自己的喜好对其进行更正,则可能甚至不需要),然后尝试验证。如果失败,则用户无法提交并提示更正其输入。

答案 1 :(得分:2)

你可能想看一下my jQuery iMask plugin,虽然你要具体要求:

.replace( /.*?(\d+)(?:\.(\d{1,2}))?.*/, function( rx, dollars, cents ){
    cents = +( cents || 0 );
    return (+dollars + (cents/((cents<10)?10:100))).toFixed(2);
} );

如果您只想删除非数字数字:

.replace( /[^0-9.]/g, '' )