javascript中匹配价格的正则表达式

价格的格式应该如下,开头数字若干位,可能有一个小数点,小数点后面可以有两位数字。

正则表达式如下:

/(^[1-9]\d*(\.\d{1,2})?$)|(^0(\.\d{1,2})?$)/

价格符合两种格式

  • ^[1-9]\d*(.\d{1,2})?$ : 1-9开头,后跟是0-9,可以跟小数点,但小数点后要带上1-2位小数,类似2,2.0,2.1,2.22等
  • ^0(.\d{1,2})?$ : 0开头,后可以跟小数点,小数点后要待上1-2位小数,类似0,0.22,0.1等

代码如下

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<input type="text" onblur="test(this);"></input>
<div id="hint"></div>
<script>
function test(input) {
var value = input.value;
console.log(value);
var reg = /(^[1-9]\d*(\.\d{1,2})?$)|(^0(\.\d{1,2})?$)/;
var div = document.getElementById("hint");
if(reg.test(value)) {
div.innerHTML="正确";
} else {
div.innerHTML="错误";
}
}
</script>
</body>

</html>

另外一种写法

/^(d*.d{0,2}|d+).*$/

测试代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
function checkPrice(me){
if(!(/^(?:d+|d+.d{0,2})$/.test(me.value))){
me.value = me.value.replace(/^(d*.d{0,2}|d+).*$/,'$1');
}
}
</script>
</head>
<body>
<input type="text" onkeyup="checkPrice(this);"/>
</body>
</html>

~~~

未经允许不得转载:WEB前端开发 » javascript中匹配价格的正则表达式

赞 (0)