.:: CODE SNIPPET ::.

"Your time is limited, so don't waste it living someone else's life"

Sử dụng Regular Expression trong Java để kiểm tra số trong chuỗi


Để xây dựng một regular expression (RE) để kiểm tra một chuỗi nào đó có phải là số hay không, hoặc kiểm tra chuỗi có chứa ký tự nào có phải là số hay không bạn cần tìm hiểu về các ký tự trong Java RE. Không có RE nào là chuẩn cho tất cả các trường hợp. Java cung cấp một RE sử dụng các lớp java.util.regex.Patten và java.util.regex.Matcher. Để đánh giá các số sử dụng RE chúng ta bắt đầu với các ví dụ đơn giản sau:

  • Kiểm tra một chuỗi là số hay không.

Theo như yêu cầu, một chuỗi là số nếu chúng chứa các số. Chúng ta sẽ bỏ qua các dấu và ký hiệu như + hay – để đơn giản hơn.
Nếu bạn quen với việc định nghĩa lại lớp ký tự trong Java RE, thì chắc bạn đã biết là “\d” biểu hiện một số (từ 0 – 9) và “\D” biểu hiện không phải số ( là những ký tự khác không phải 0-9). Bây giờ sử dụng lớp định nghĩa trước, một chuỗi không phải là số nếu nó không chứa bất kỳ một số nào hết, và bạn có thể viết như sau:

Pattern pattern = Pattern.compile(".*\\D.*");

Mẫu trên trả về true nếu String chứa những ký tự khác các số từ 0-9.
Một mẫu tương tự khác để kiểm tra xem một chuỗi có phải toàn là các số từ 0-9 hay không như sau:

Pattern pattern = Pattern.compile(".*[^0-9].*");
  • Kiểm tra xem một chuỗi có phải bao gồm 6 ký tự số thôi hay không

Loại RE đặc biệt này sử dụng để kiểm tra các loại dữ liệu như ID, zipcode hoặc những loại dữ liệu thuần túy khác.Để kiểm tra một chuỗi có chứa 6 ký tự là số hay không ta làm như sau:

Pattern digitPattern = Pattern.compile("\\d\\d\\d\\d\\d\\d");

Mẫu trên kiểm tra các ký tự 6 lần. Mẫu này có thể viết một cách đơn giản hơn và dễ đọc hơn như sau:

Pattern digitPattern = Pattern.compile("\\d{6}");

Đoạn code ví dụ sau đễ kiểm tra số theo RE
Đoạn code Java sau kiểm tra một chuỗi có phải là các số integer hay không. Trong chương trình Java này, chúng ta sử dụng RE để kiểm tra String có chứa các số từ 0-9 hay không. Một điều thú vị cần chú ý là nếu RE này tìm thấy ký tự chấm (.) thì nó sẽ false

import java.util.regex.Pattern;

/**
 *
 * @author PRMHUITEDU
 */
public class TestBasicJava {

    public static void main(String args[]) {

        // Regular expression in Java to check if String is number or not
        Pattern pattern = Pattern.compile(".*[^0-9].*");
       //Pattern pattern = Pattern.compile(".*\\D.*");
       String [] inputs = {"123", "-123" , "123.12", "abcd123"};

       for(String input: inputs){
           System.out.println( "does " + input + " is number : "
                                + !pattern.matcher(input).matches());
       }

       // Regular expression in java to check if String is 6 digit number or not
       String [] numbers = {"123", "1234" , "123.12", "abcd123", "123456"};
       Pattern digitPattern = Pattern.compile("\\d{6}");
       //Pattern digitPattern = Pattern.compile("\\d\\d\\d\\d\\d\\d");

       for(String number: numbers){
           System.out.println( "does " + number + " is 6 digit number : "
                               + digitPattern.matcher(number).matches());
       }
    }
}
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: