2016-08-03 94 views
-8

我想要一個條件,只有如果一個字符串中包含更多的四位數字,並且如果字符串中少於四位數字是假的,我嘗試過正則表達式像/ \ d {4} /,需要幫助如何檢查一個字符串是否包含多個數字(java)?

+1

@kruti您可能的重複根本不是重複的 –

+1

「沒有運氣」不足以說明您遇到的問題。 – khelwood

+0

可能重複的[正則表達式計數不包括空格的位數](http://stackoverflow.com/questions/23978695/regex-count-number-of-digits-excluding-space) – Rupsingh

回答

0

以下模式會匹配包含至少4個數字的字符串:

(.*?\d){4, } 
+0

不,它是一個正則表達式模式。如何將它集成到Java中不應該是問題 –

1
public static void main(String[] args) { 
    String toCheck1 = "assg3asgasgas123aassag3"; 
    String toCheck2 = "aasdasfasfs"; 
    System.out.println(String.format("more then 4 number in \"%s\" - %s", toCheck1, moreThen4NumbersInString(toCheck1))); 
    System.out.println(String.format("more then 4 number in \"%s\" - %s", toCheck2, moreThen4NumbersInString(toCheck2))); 
} 

private static boolean moreThen4NumbersInString(String string) { 
    int numberOfNumbers = 0; 
    for (int i = 0; i < string.length(); i++) { 
     if (Character.isDigit(string.charAt(i))) { 
      numberOfNumbers++; 
      if (numberOfNumbers > 4) { 
       return true; 
      } 
     } 
    } 
    return false; 
} 

輸出:

更然後4號在 「assg3asgasgas123aassag3」 - 真更然後4在 「aasdasfasfs」號 - 假

+1

在達到閾值後不必再繼續計算......(只是說) – Fildor

+0

@Fildor固定那個 – Divers

0

轉換的stringchar[]for - 通過數組中的所有元素進行循環,並計數int count中的數字編號。就這麼簡單

0

你的表達需要四位數的順序。還有我的是數字之間的一些其他字符,所以要求「數字和可選的東西」至少四次:

(?:\d.*?){4,} 

演示:https://regex101.com/r/kZ7iZ9/2

+0

「。*?」必須位於數字的前面 –

+0

@RafaelAlbert,除了'\ d。*?'以外的任何一種方式似乎都更有效。 –

+0

取決於模式是否必須匹配開頭或者不匹配,因此使用的方法。 –

0

在這裏,你走了樣:

package com.company.misc; 

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class RegexSample { 

    public static void main(String[] args) { 
     String regex = "(.*?\\d){4,}"; 
     //(.*?\d){4, } do not use this, compilation error 
     String input = "test2531"; 
     Pattern pattern = Pattern.compile(regex); 
     Matcher matcher = pattern.matcher(input); 

     boolean isMatched = matcher.matches(); 
     System.out.println(isMatched); 

    } 
} 

希望我已經給出了你的用例的例子。

相關問題