Asp.net с проблемой RegularExpression - PullRequest
0 голосов
/ 12 мая 2010

Привет, Я пытаюсь сделать проверку ввода текста для проверки номера телефона. У меня есть текстовое поле 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 Ответ

2 голосов
/ 12 мая 2010

Не знаю, откуда вы его взяли, но ваше регулярное выражение не собирается проверять телефонные номера в США. Ожидается, что в нем слишком много латинских символов и почти никаких цифр.

На самом деле ... похоже на подтверждение регулярного выражения электронной почты : 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-1234, 123 123 1234, 1-800-ALPHNUM

или более простой

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

Взято из: http://regexlib.com/REDetails.aspx?regexp_id=641
Допустимые числа: (787)755-0114, 939-315-0112, 7879093849

но вам действительно нужно найти регулярное выражение, которое лучше всего использовать в вашем сценарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...