javascript - 使用正则表达式验证忽略一个变量?

标签 javascript regex validation

我是一名设计师,对正则表达式不是很熟悉。在论坛上一些非常友善的发帖者的帮助下,我付出了很大的努力才走到这一步。下面称为 checkform 的脚本应验证三个字段: 'client'、 'terms' 和 'AMOUNT' 。这非常简单,客户和条款是必填字段,而“金额”需要以正确的十进制格式输入,例如。 27.00 欧元。它验证“客户”和“条款”,但完全忽略“金额”?不检查任何内容。

任何帮助将不胜感激。

<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 个。看看 thisthis

 <input type="text" name="name" size="48" />

应该是

<input name="name" type="text" name="name" id="name" size="48" />

关于javascript - 使用正则表达式验证忽略一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16400611/

相关文章:

php - 如何在 Laravel 验证中要求数组并防止获得意外 key

c++ - 数字输入的输入验证

c - 使用函数验证电子邮件地址并在主函数中调用它

c# - 将模型编写为 Javascript 中可用的对象

Javascript 检查文件大小

php - 根据模式更改字符串

regex - 提取 ruby 中单引号之间的日期

javascript - 如何用数字数组过滤对象数组

javascript - jquery获取矩形宽度和高度传单

python - 正则表达式匹配没有指定空格的字符