Javaの文字列が数字、文字、中国語が含まれているかどうかが判断されます

     通常、定期的なstr.matchesマッチを使って平易な英語、純粋な数字、および数字の組み合わせとして、Javaで文字列を、かどうかを決定する場合、この文字列と正規表現が与えられた正規に一致するかどうかを教えてください。  
  1. Unicode文字エンコーディング様々な範囲:
  2. 文字:[0x4e00,0x9fa5(又は小数[19968,40869])
  3. 図:[0x30,0x39](10進数または[48、57])
  4. 小文字:[0x61,0x7a(又は小数[97、122])
  5. 大文字:[0x41,0x5a](10進数または[65、90])
インポートjava.util.regex.Matcher;
 インポートjava.util.regex.Patternの、

パブリック クラスStrValidate { 

    // 純粋デジタル
    プライベート 静的文字列DIGIT_REGEX = "[0-9] +" ;
     //はデジタル含ま
    プライベート 静的「文字列= CONTAIN_DIGIT_REGEXを。* [0-9] *。 " ;
     // 純粋文字
    プライベート 静的文字列LETTER_REGEX =" [A-ZA-Z] + " ;
     //は文字含む
    プライベート 静的文字列CONTAIN_LETTER_REGEX =を" * [A-ZA-Z] 。* " ;
     // 純粋な中国の
    プライベート 静的CHINESE_REGEX =文字列"[\ u4e00- \ u9fa5]" ;
     // 英数字のみ
    のプライベート 静的な文字列LETTER_DIGIT_REGEX = "^ [Z-A-z0-9A] + $" ;
     プライベート 静的な文字列CHINESE_LETTER_REGEX =「([\ u4e00 - \ u9fa5] + | [A-ZA-Z] +) " ;
     プライベート 静的の文字列CHINESE_LETTER_DIGIT_REGEX =" ^ [Z-A-z0-9A \ u4e00- \ u9fa5] + $ " ; 

    / ** 
     *文字列か否かを判断します唯一の数字と文字を含む
     * 
     * @paramのSTR 
     * @return 
     * / 
    パブリック 静的 ブールisLetterDigit(文字列STR){
         リターン str.matches(LETTER_DIGIT_REGEX)。
    } 
    / **
     句読点を含めない*かどうかに文字、
     * 
     * @paramのCON 
     * @return 漢字をtrueに
      * / 
    パブリック 静的 ブールisChinese(文字列CON){ 
        パターン・パターン = Pattern.compileの(CHINESE_REGEX);
         のためint型 I = 0; I < con.length(); IはI +を= 1。){
             IF(!Pattern.matcher(
                    検索()){String.valueOf(con.charAt(I)))。
                リターン falseに; 
            } 
        } 
        リターン をtrueに; 
    } 
    / ** 
     *正規表現が文字列かどうかを判断
     のみ文字、数字と文字を含むであろう
     * 
     * @param STR 
     * @return 
     * / 
    パブリック 静的 ブールisLetterDigitOrChinese(文字列STR){
         戻りstr.matches(CHINESE_LETTER_DIGIT_REGEX); 
    } 
    / ** 
     *名前は、文字と文字を含むことができ、他のキャラクター
     * 
     * @param passengerName 
     * @return 
     * / 
    パブリック 静的 ブールcheckChineseLetter(文字列passengerName){ 
        パターンpattern = Pattern.compile(CHINESE_LETTER_REGEX)の;
        マッチャーマッチャー =Pattern.matcher(passengerName);
         IF (matcher.matches()){
             // 特殊文字が含まれていないが
            返す trueに; 
        } 他に{
             //は、特殊文字が含まれている
            返す falseに; 
        } 
    } 
    / ** 
     *文字列かどうかを決定します句読点(中国語または英語の句読点)、真含まれています。
     *原則:オリジナルの文字列は、すべての句読点をきれいに、洗浄を行います。
     この場合*、参照がtrueを返し、洗浄前後の、異なる長さの文字列を句読点を含むRET場合、そうでない場合、長さが等しい、戻り偽。
     * 
     * @param RET 
     * @return 真あって英語の句読点の
      * / 
    パブリック 静的 ブール checkPunctuation(文字列RET){
         ブール B = falseに
        文字列TMP = RET;
 //         通常のマッチング内部でReplaceAllは数字のみ、英語と中国語を残して、英語の句読点の文字列を空にすることができます。
        tmp.replaceAll = TMP( "\\ P {P}"、 "" );
         IF(!ret.length()= tmp.length()){ 
            B = trueに; 
        } 
        戻りB; 
    } 
    パブリック 静的 ブールisDigit(文字列RET){
         戻りret.matches(DIGIT_REGEX); 
    } 
    パブリック 静的 ブールisLetter(文字列RET){
         戻りret.matches(LETTER_REGEX)。
    } 
    パブリック 静的 ブールhasDigit(文字列RET){
         戻りret.matches(CONTAIN_DIGIT_REGEX)。
    } 
    パブリック 静的 ブールhasLetter(文字列RET){
         戻りret.matches(CONTAIN_LETTER_REGEX)。
    } 
    パブリック 静的 ボイドメイン(文字列[]引数){
 //         するSystem.out.println(isLetterDigitOrChinese( "33dd33")+「-------麦迪娜・买买提--------- 「);
//         するSystem.out.println(isChinese( "麦迪娜・买买提"));
//         するSystem.out.println(isChinese( "这个X")+ "checkChineseLetter");
         するSystem.out.println(isChinese( "checkChineseLetter"));
//         するSystem.out.println(isChinese( "checkChineseLetter3")); 

        System.out.println(hasDigit( "99999" )); 
        System.out.println(hasDigit( "9999舅舅9" )); 
    } 
}
 
     参照
 
 
 
 
 

おすすめ

転載: www.cnblogs.com/east7/p/12215829.html