0

我第一次使用正则表达式,我真的很惊讶!好吧,新发现总是令人惊讶:)。我在 JavaScript 中使用。我正在使用以下方式;(有很多字段,除了这个电话格式之外,所有字段都工作得很好)

function validate(form) {
    var phone = form.phone.value;
    var phoneRegex = /^(\+|00)\d{2,3}-\d{1,2}-\d{3}-\d{4}$/g;
    //Checking 'phone' and its regular expressions  
    if(phone == "") {
      inlineMsg('phone','<strong>Error</strong><br />You must enter phone number.',2);
    return false;
    }
    if(!phone.match(deptRegex)) {
      inlineMsg('phone','<strong>Error</strong><br />Enter valid phone <br />+xxx-x-xxx-xxxx (or) <br />00xxx-x-xxx-xxxx.',2);
    return false;
    }
  return true;
}

HTML

<div id="wrapper">
  <form name="form" id="form" class="form" onsubmit="validate(this);return false">
<label for="phone">Phone:</label><input type="text" name="phone" id="phone" />
<input type="submit" value="Submit" class="submit" />
</div>

现在我很困惑,我可能写错了表达式,但我也测试了它。我想我用 JavaScript 写表达式是错误的。有人可以帮忙吗?

PS以下是我测试表达式的正则表达式在线测试仪的图像。

表达测试

4

2 回答 2

1

我可以看到您的代码存在两个问题:

  • 最后一个之前没有结束</form>标签</div>
  • 您正在为您的正则表达式使用两个不同的变量名称:phoneRegexdeptRegex.

纠正这些问题后,代码运行良好。看看它在 jsFiddle 上的工作:http: //jsfiddle.net/XFWGk/

如果这不起作用,则问题可能出在您的inlineMsg功能上。我不熟悉那个,所以请确保您正确使用它。

于 2012-04-20T13:28:17.047 回答
0
  ^(\+|00)\d{2,3}-\d{1,2}-\d{3}-\d{4}$

这匹配 +nn[n]-n[n]-nnn-nnnn 或 0nn[n]-n[n]-nnn-nnnn

那是给哪个国家的?

除了 00 拨号前缀外,您可能还希望包括美国/加拿大使用的 011 拨号前缀。

于 2012-11-09T01:40:21.440 回答