Advertisement
bugkiller

RegexChecker

May 12th, 2014
264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.58 KB | None | 0 0
  1. import java.util.regex.*;
  2. import java.io.*;
  3.  
  4. class RegCheck {
  5.     public static void main(String args[]) throws IOException {
  6.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  7.         String userDefinedPattern = "9.[1,4]...[5-8]..."; //br.readLine();
  8.         System.out.println(userDefinedPattern);        
  9.         String phoneNumber = br.readLine();
  10.     //the following line assumes a three character ISD code (e.g. +91), hence the substring trimmer is there.
  11.     //input the 10 digit phone number along with the ISD code. For example: +919876543210
  12.     //note that, userDefinedPattern is just a 10 digit number
  13.         phoneNumber = phoneNumber.substring(3, phoneNumber.length());
  14.         System.out.println("Number at input is: " + phoneNumber);
  15.         int numDigits = 10;
  16.         boolean blockThisNumber = true;
  17.         boolean[] checker = new boolean[numDigits];
  18.         for(int i = 0; i < numDigits; i++)      checker[i] = false;
  19.         for(int i = 0, j = 0; i < phoneNumber.length() && j < userDefinedPattern.length(); i++) {
  20.             char c = phoneNumber.charAt(i);
  21.             int p = Character.getNumericValue(c);
  22.             //System.out.println(p + " " + userDefinedPattern.charAt(j));            
  23.            
  24.             //Case 1: u is a digit, then check if it is equal to p
  25.             if(Character.isDigit(userDefinedPattern.charAt(j))) {
  26.                 if(p == Character.getNumericValue(userDefinedPattern.charAt(j))) {
  27.                     checker[i] = true;
  28.                     j++;
  29.                     continue;
  30.                 }
  31.                 else {
  32.                     j++;
  33.                     continue;
  34.                 }
  35.             }
  36.  
  37.             //Case 2: u is a dot, then no checking just continue
  38.             if(userDefinedPattern.charAt(j) == '.') {
  39.                 checker[i] = true;
  40.                 j++;
  41.                 continue;
  42.             }
  43.  
  44.             //Case 3: u is a range specified by [a-b] where a, b are digits
  45.             if(userDefinedPattern.charAt(j) == '[' && userDefinedPattern.charAt(j + 2) == '-') {
  46.                 //find the next character to [ and name it a,
  47.                 //skip the '-', read the next character, name it b
  48.                 //check for boundary matchings, manipulate j accordingly
  49.                
  50.                 int a = Character.getNumericValue(userDefinedPattern.charAt(j + 1));
  51.                 int b = Character.getNumericValue(userDefinedPattern.charAt(j + 3));
  52.                 if(p >= a && p <= b) {
  53.                     checker[i] = true;
  54.                     j = j + 5;
  55.                     continue;
  56.                 }
  57.                 else {
  58.                     j = j + 5;
  59.                     continue;
  60.                 }
  61.             }
  62.  
  63.             //Case 4: u is a set of digits
  64.             if(userDefinedPattern.charAt(j) == '[' && userDefinedPattern.charAt(j + 2) == ',') {
  65.                 while(userDefinedPattern.charAt(j) != ']') {
  66.                    
  67.                     if(Character.isDigit(userDefinedPattern.charAt(j))) {
  68.                         if(p == Character.getNumericValue(userDefinedPattern.charAt(j))) {
  69.                             checker[i] = true;
  70.                             break;
  71.                         }    
  72.                     }
  73.                     else    j++;
  74.                 }
  75.                 //j reached ']', so increment it
  76.                 j++;
  77.             }
  78.    
  79.         }
  80.  
  81.         for(int i = 0; i < numDigits; i++)     blockThisNumber &= checker[i];
  82.  
  83.         System.out.println((blockThisNumber ? "Call Blocked!" : "Calling..."));
  84.     }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement