0

電話番号の入力にフィールド制約を設定する方法を見つけようとしています。例:次 France (country code 33) local number 0142687984のように入力する必要があります 33142687984

たとえば 00331 42687984, 0033 (1) 42687984, +33 1 42 68 79 84 などではありません

基本的に、数字は0で始まることはなく、スペースや+()などの記号を含めることはできず、9桁以上にする必要があります。

大洪水のスクリプトのサンプルを見つけようとしましたが、成功しませんでした。助けてください

私はこれまでにこれを持っています:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    // TODO Auto-generated method stub

    String nom = request.getParameter("nom");
    String prenom = request.getParameter("prenom");
    String phone = request.getParameter("phone");
    String adressefacturation = request.getParameter("adressefacturation");
    String ZIPfacturation = request.getParameter("ZIPfacturation");
    String paysfacturation = request.getParameter("paysfacturation");
    String adresseexpedition = request.getParameter("adresseexpedition");
    String ZIPexpedition = request.getParameter("ZIPexpedition");

    String paysexpedition = request.getParameter("paysexpedition");
    String CardNumber = request.getParameter("CardNumber");
    String CardDateOfExpiry = request.getParameter("CardDateOfExpiry");

    String password = request.getParameter("password");         
}
4

3 に答える 3

1

「基本的に、数字は0で始まることはなく、スペースや+()などの記号を含めることはできず、少なくとも9桁である必要があります」ので、1〜9桁で始まり、他の数字のみを含めることができる数字のみを受け入れると仮定します。 (少なくとも8つ)。

それはあなたがこの正規表現を試してみたいものです[1-9][0-9]{8,}

System.out.println("123456789".matches("[1-9][0-9]{8,}"));//true
System.out.println("12345678".matches("[1-9][0-9]{8,}"));//false
System.out.println("012345678".matches("[1-9][0-9]{8,}"));//false
于 2012-07-19T12:54:01.950 に答える
0

一致させるために正規表現を使用する /^33\d{9}$/

于 2012-07-19T12:53:40.857 に答える
0

いくつかの可能性を計算するには、入力した文字列を分割する必要があります( "..(1).."のテスト後):

    // String[] litteralPhone = request.getParameter("phone").split(" ") ;
    final String litteralPhone = "0033 (119999999990";
    final int i = litteralPhone.indexOf(")");
    if (i > 0) {
        if (litteralPhone.substring(i).length() > 8) {
            System.out.println(litteralPhone.replaceAll(
                "^[0]{1,}|[ ]{0,}\\(|\\)[ ]{0,}", ""));
        } else {
            System.out.println("error with ()");
        }
    } else {
        // suppress trailing ( 
        final String[] tabNum = litteralPhone.replaceAll("\\(|\\)", "").split(" ");

        switch (tabNum.length) {
            case 1 : // 003311236549879879
               tabNum[0] = tabNum[0].replaceAll("^[0]{1,}", "");
               if (tabNum[0].length() < 10) { // tune this lenght
                      System.out.println("error 1");
                }
                break;
            case 2 : // 033 01234567890
                tabNum[0] = tabNum[0].replaceAll("^[0]{1,}", "");
                tabNum[1] = tabNum[1].replaceAll("^[0]", "");
                if (tabNum[1].length() < 8) {
                    System.out.println("error 2");
                }
                break;
            case 3 : // +33 1 012346577979
                tabNum[0] = tabNum[0].replaceAll("^[0]{1,}", "");
                tabNum[2] = tabNum[2].replaceAll("^[0]", "");
                if (tabNum[2].length() < 8) {
                    System.out.println("error 3");
                }
                // add all cases here
            default :
                System.out.println("not a good phone number");
                break;
        }
        final StringBuilder sb = new StringBuilder();
        for (final String string : tabNum) {
            sb.append(string);
        }
        System.out.println(sb.toString());
    }
于 2012-07-19T14:06:59.760 に答える