【发布时间】:2011-08-07 05:26:31
【问题描述】:
我有一个简单的 ajax 表单,我正在尝试验证它
- 有值
- 该值是一个 10 位数字
我正在尝试使用 RegEx 来执行此操作。这是我到目前为止所拥有的。
var reg = new RegExp("/[0-9]{10}/");
$("#call_form").bind("submit", function() {
if ($("#call_number").val().length < 1 && reg.test($("#call_number").val())) {
$("#call_error").show();
return false;
}
});
我知道问题与正则表达式有关,就好像我删除了验证框是否具有值的这部分代码一样。
编辑:这是我使用的最终正则表达式
var regEx = new RegExp("/[0-9]/");
$("#call_form").bind("submit", function() {
if ($("#call_number").val().length != 10 && !$("#call_number").val().match(regEx)) {
$("#call_error").show();
$.fancybox.resize();
return false;
}
});
编辑 2 使用这里的建议是我正在使用的,它允许空格和破折号,然后在检查时被剥离
$("#call_form").bind("submit", function() {
var Phone = $("#call_number").val().replace(/\D+/g,'');
if (Phone.length != 10) {
$("#call_error").show();
$.fancybox.resize();
return false;
}
});
【问题讨论】:
-
那个正则表达式只会检查字符串中是否至少有一个数字。您应该保留
{10}以确保它是所有数字。 -
@tjameson 好的,如果我保留
{10},我应该可以放弃length != 10对吧?还是最好不要? -
是的,但你应该两者都有。如果正则表达式匹配字符串的任何部分,reg.test 将返回 true。
-
或者您可以使用 ^ 和 $ 锚定您的正则表达式:
/^[0-9]{10}$/我认为是语法。 -
我还想指出,您似乎忽略了人们喜欢将
(555)555-5555等放入电话号码字段的事实,我个人在输入我的时一直使用555.555.5555当一些写得不好的正则表达式拒绝我时,我会讨厌它...删除所有非数字,然后检查.length >= 10以确保至少 10 个数字...
标签: javascript jquery regex validation