[英]Validating with regular expressions ignoring one variable?
我是一名設計師,對正則表達式不是很熟悉。 我已經做出了很大的努力,在一些非常友善的發帖人對本論壇的幫助下,達到了這一目標。 下面稱為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-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.
要么
^[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
在某些情況下屬性,在某些情況下,你使用的是他們的1。看看在這個和這個
<input type="text" name="name" size="48" />
應該
<input name="name" type="text" name="name" id="name" size="48" />
正則表達式工作正常。 腳本失敗於
document.getElementById('name').value==""
沒有ID為name
的元素,因此會出現錯誤。 您需要在輸入的name
添加一個id
屬性:
<input type="text" name="name" id="name" size="48" />
要為AMOUNT
字段提供其他警報,請將警報放在處理regexp測試失敗的代碼塊中。
if(!reg.test(document.getElementById('AMOUNT').value))
{
alert("Please enter a valid amount");
return false;
}
在這里使用return false
,這樣當它到達函數末尾時您不會再收到第二次警報。
這REG前工作對我來說,如果你想查詢€ 27.00
與€
然后sysmbol用正則表達式改變var reg=/^\\€\\s[0-9]{1,6}\\.[0-9]{2}$/;
;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.