我是一名设计师,我对正则表达式不是很熟悉。我已经做了很大的努力,从一些非常友好的海报到这个论坛的一些帮助,以实现这一目标。下面名为checkform的脚本应该验证三个字段,'client','terms'和'AMOUNT'。它非常简单,客户端和术语是必填字段,而'AMOUNT'需要输入正确的十进制格式,例如。 €27.00。它验证'客户'和'条款但完全忽略'AMOUNT'?不检查它。
非常感谢任何帮助。
<form action=http://rcehholidaytrust.com/account/redirectoffresponsepage.php method=post onSubmit="return checkform()">
<table width="400" border="0" cellspacing="1" cellpadding="0">
<tr>
<td><div align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Name </font></div></td>
<td><input type="text" name="name" size="48" /></td>
</tr>
<tr>
<td><div align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Acc. No.</font></td>
<td><label for="client"></label>
<input name="CUST_NUM" type="text" id="client" size="48" /></td>
</tr>
<tr>
<td><div align="right">Payment €</div></td>
<td><label for="AMOUNT"></label>
<input name="AMOUNT" type="text" id="AMOUNT" size="47" /></td>
</tr>
<tr>
<td><div align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Address</font></div></td>
<td><textarea name="address" wrap="virtual" cols="35" rows="5"></textarea></td>
</tr>
<tr>
<td><div align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Telephone</font></div></td>
<td><input type="text" name="telephone" size="48" /></td>
</tr>
<tr>
<td><p align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Email</font></p></td>
<td><input type="text" name="email" size="48" /></td>
</tr>
<tr>
<td><div align="right"></div></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><input type="checkbox" name="terms" id="terms" />
<label for="terms">Agree to terms and conditions</label></td>
</tr>
</table>
<p> </p>
<input type=submit value="Proceed to secure server">
</form>
<script>
function checkform()
{
var reg=/^[0-9]{1,6}\.[0-9]{2}$/;
var status=true;
if(!reg.test(document.getElementById('AMOUNT').value))
{
status=false;
}
if(document.getElementById('client').value=="" || document.getElementById('name').value=="")
{
status=false;
}
if(document.getElementById('terms').checked==false)
{
status=false;
}
if(status==false)
alert("Please check all fields");
return status;
}
</script>
</body>
</html>
答案 0 :(得分:2)
您的正则表达式^[0-9]{1,6}\.[0-9]{2}$
将匹配1到6位数后跟2位小数位。
你可以试试这个
^[0-9]{1,6}(\.[0-9]{2})?$
//This would match 1 to 6 digits optionally followed by 2 decimal digits.
OR
^[0-9]{1,6}(\.[0-9]{1,2})?$
//This would match 1 to 6 digits optionally followed by 1 to 2 decimal digits.
?
匹配前一组或字符可选
修改强>
在某些情况下,您使用id
和name
属性的相同名称,在某些情况下,您使用的是其中之一。请查看this和{{3} }
<input type="text" name="name" size="48" />
应该是
<input name="name" type="text" name="name" id="name" size="48" />
答案 1 :(得分:1)
正则表达式工作正常。
的脚本失败了document.getElementById('name').value==""
没有ID name
的元素,因此会出错。您需要在id
输入中添加name
属性:
<input type="text" name="name" id="name" size="48" />
要为AMOUNT
字段提供不同的警报,请将警报放在处理未通过正则表达式测试的块中。
if(!reg.test(document.getElementById('AMOUNT').value))
{
alert("Please enter a valid amount");
return false;
}
在此处使用return false
,以便在功能结束时不会收到第二个警报。
答案 2 :(得分:0)
如果您要使用€ 27.00
sysmbol检查€
,然后使用var reg=/^\€\s[0-9]{1,6}\.[0-9]{2}$/;
更改正则表达式,则此注册表适用于我;