日期:2014-05-16  浏览次数:20287 次

js验证输入的值是否钱数

1.text文本框接受输入的值,输入的值要符合如下规则:

(1).没有小数点的正整数,可以加字符"元":

????? 正则表达式为 ^[1-9]+[元]?$。

(2).带有小数点的正浮点数,小数点后最多2位可以加字符"元":

????? 正则表达式为^[1-9]+[\.][0-9]{1,2}[元]?$

(3).小于1的带有小数点的正浮点数,同样小数点后最多2位可以加字符"元":

??????????正则表达式为^[0][\.][0-9]{1,2}[元]?$

(4).表示0元:

??????????正则表达式为^[0][元]?$

?

示例代码:

?

<script>
  function isMoneys(s){   
	 //在匹配123XXX时,匹配123,不去验证后面的字符。
	// var regu = "(^[1-9]+|[0][\.][0-9]{1,2}[元]?$)|(^[1-9]+|[0][元]?$)";
	//为了解决上面的问题,在正则开头加了括号这样就不会放过123xxx了。
	//但匹配123.12时,正则(^([1-9]+|[0])[元]?$)会匹配123.
	 //var regu = "(^([1-9]+|[0])[\.][0-9]{1,2}[元]?$)|(^([1-9]+|[0])[元]?$)"; 

	//为了在匹配123.12时,避免正则(^([1-9]+|[0])[元]?$)会匹配123,所以把去掉了括号()中的竖线,把正则分开写。
	 var regu = "(^[1-9]+[\.][0-9]{1,2}[元]?$)|(^[0-9]+[元]?$)|(^[0][元]$)|(^[0][\.][0-9]{1,2}[元]?$)";
	 var re = new RegExp(regu);
	 alert(re.exec(s));
	 if (re.test(s)) {
		return true;
	 } else {
		alert("付款金额输入有误!");
		return false;
	 }
}
  
 </script>

<table>
 <tr>
	 <td class="tbtd">付款金额(元)<span style="color: red;">*</span></td>
	 <td colspan="3">
	 <input type="text"  onblur="isMoneys(this.value)"   name="JD_SQD_FK_DETAIL/FK_JE" id="JD_SQD_FK_DETAIL/FK_JE" size="80" style="border:solid 1 blue;font-size:15px;"/>&nbsp;</td>
 </tr>
</table>

???

总结:在js验证表达式中竖线|用的地方很多,竖线表示二选一。大括号{}表示连续次数,但是{0,1,2}会出现错误。因为{0}表示不出现,其中大括号失去了意义。