使用忽略一个变量的正则表达式进行验证
Validating with regular expressions ignoring one variable?
我是一名设计师,对正则表达式不是很熟悉。我已经做出了相当大的努力,得到了一些帮助,从一些非常善良的海报到这个论坛。下面称为checkform的脚本应该验证三个字段,'client', 'terms'和'AMOUNT'。这是相当直接的,客户端和术语是必需的字段,而"AMOUNT"需要输入适当的十进制格式,例如。€27.00。它验证了"客户"answers"条款",但完全忽略了"金额"?不检查任何东西
任何帮助都将非常感激。
<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
属性使用了相同的名称,在某些情况下,您使用了其中一个。看看这个和这个
<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
,这样当它到达函数结束时就不会得到第二次警报。
如果你想用€
符号检查€ 27.00
,那么用var reg=/^'€'s[0-9]{1,6}'.[0-9]{2}$/;
更改regex;
相关文章:
- 在正则表达式中使用变量
- Javascript 复杂的正则表达式与变量
- Jquery 替换所有文本语法正则表达式中的变量
- 用于比较 HTML 标记内的变量的正则表达式
- javascript中正则表达式(match)中变量的使用错误
- javascript正则表达式:使用单词边界将变量传递给regexp
- 使用正则表达式中的变量与$和^匹配字符串
- 正则表达式提取PHP中的JavaScript变量
- 调整 javascript 正则表达式以过滤来自 url 的变量
- 什么是用于断开变量可能包含“&”的查询字符串的正则表达式
- jQuery 验证器正则表达式使用数组或变量
- 使用变量中的 gi 标志创建正则表达式
- Javascript 正则表达式从句子中检索变量
- 正则表达式中的变量
- 在 javascript 的正则表达式中使用变量
- 添加另一个变量后,正则表达式替换不起作用
- JavaScript 正则表达式,用于获取以 @ 字符开头的字符串中的变量列表
- 如何在正则表达式中使用变量
- 遍历包含正则表达式的 JavaScript 对象变量
- 保存正则表达式匹配项的全局变量名称是什么