Asp.net有RegularExpression问题

时间:2010-05-12 00:40:51

标签: asp.net jquery validation

问候, 我尝试对文本框输入进行验证以验证电话号码。 我有一个asp.net文本框和复选框。默认设置是验证美国电话号码,当我选中复选框时,我应该更改RegularExpression和错误消息,以使用我自己的RegularExpression验证国际电话。 验证国际电话没问题,但问题是验证美国电话号码。我总是收到一条错误消息,指出它是无效的电话号码。 我使用了不同的RegularExpression但没有用。

请查看我的代码并告诉我。

此致 !

.....................
ASP.net Code
.....................    

<%@ Page Language="C#" MasterPageFile="~/Master.Master" AutoEventWireup="true" CodeBehind="UpdateContact.aspx.cs" Inherits="IMAM_APPLICATION.UpdateContact" Title="Untitled Page" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <script src="js/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
    <script src="js/jquery.validate.js" type="text/javascript"></script>
    <script src="js/js.js" type="text/javascript"></script>
    <script type="text/javascript">
         $(document).ready(function() {
             ValidPhoneHome("#<%= chkIntphoneHome%>");
             $("#aspnetForm").validate({

             // debug: true,
             rules: {
                 "<%=txtHomePhone.UniqueID %>": {
                     phonehome: true
                 }

                 },
             errorElement: "mydiv",
             wrapper: "mydiv",  // a wrapper around the error message

             errorPlacement: function(error, element) {
                 offset = element.offset();
                 error.insertBefore(element)
                 error.addClass('message');  // add a class to the wrapper
                 error.css('position', 'absolute');
                 error.css('left', offset.left + element.outerWidth());
                 error.css('top', offset.top - (element.height() / 2));

             }
         });
         })
    </script>

    <div id="mydiv">
        <asp:CheckBox ID="chkIntphoneHome" runat="server" Text="Internation Code"
            Style="position: absolute; top: 620px; left: 700px;"
            onclick=" ValidPhoneHome(this)" />

        <asp:TextBox ID="txtHomePhone" runat="server" Style="top: 650px; left: 700px;
            position: absolute; height: 22px; width: 128px" ></asp:TextBox>
    </div>
</asp:Content>            

.............................
js.js File  
...................
var RegularExpression;
var USAPhone = /(^[a-z]([a-z_\.]*)@([a-z_\.]*)([.][a-z]{3})$)|(^[a-z]([a-z_\.]*)@([a-z_\.]*)(\.[a-z]{3})(\.[a-z]{2})*$)/i;

var InterPhone = /^\d{9,12}$/;
var errmsg;

function ValidPhoneHome(sender) {
    if (sender.checked == true) {
        RegularExpression = InterPhone;
        errmsg = "Enter 9 to 12 numbers as international number";    
    }
    else {
        RegularExpression = USAPhone;
        errmsg = "Enter a valid number";
    }
    jQuery.validator.addMethod("phonehome", function(value, element) {
        return this.optional(element) || RegularExpression.test(value);
    }, errmsg);
}

1 个答案:

答案 0 :(得分:2)

不知道你从哪里得到它,但你的正则表达式不会验证美国的电话号码..它预计会有太多的拉丁字符,几乎没有数字。

实际上......它看起来像是一个电子邮件正则表达式验证:D 请检查您的正则表达式,并将其替换为有效的内容。

您可以使用类似

的内容
  

/ ^(0-9?)?((?[0-9] {3})?| [0-9] {3})(| - )?([0-9] {3}( | - )?[0-9] {4} | [a-zA-Z0-9] {7})$ /

从这里采取:http://regexlib.com/REDetails.aspx?regexp_id=58
有效数字:1-(123)-123-1234123 123 12341-800-ALPHNUM

或更简单的

  

/ ^(()(787 | 939)()| - ?)([0-9] {3})( - )([0-9] {4} |?[0-9] { 4})$ /

取自:http://regexlib.com/REDetails.aspx?regexp_id=641
有效数字:(787)755-0114939-315-01127879093849

但是你真的需要找到最适合你的场景的正则表达式。