日期:2014-05-16 浏览次数:20332 次
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;"/> </td> </tr> </table>
???
总结:在js验证表达式中竖线|用的地方很多,竖线表示二选一。大括号{}表示连续次数,但是{0,1,2}会出现错误。因为{0}表示不出现,其中大括号失去了意义。