簡體   English   中英

使用正則表達式進行驗證而忽略一個變量?

[英]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>&nbsp;</td>
            </tr>
            <tr>
             <td>&nbsp;</td>
            <td><input type="checkbox" name="terms" id="terms" />
             <label for="terms">Agree to terms and conditions</label></td>
                    </tr>
        </table>
        <p>&nbsp;</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.

? 可選地匹配前面的組或字符


編輯

您正在使用相同的名稱idname在某些情況下屬性,在某些情況下,你使用的是他們的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM