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" οnblur="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}表示不出现,其中大括号失去了意义。