首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用regex在Java中检查准确的电话号码

如何用regex在Java中检查准确的电话号码
EN

Stack Overflow用户
提问于 2017-02-15 11:21:28
回答 3查看 1.9K关注 0票数 4

你好,我是新来的regex,我不知道我在做什么。这就是我寻求援助的原因。

我有以下电话号码+359878123456,我需要检查电话号码是否符合标准。

  • +359是精确的扩展
  • 第二个数字是运算符号,以下三个数字之一: 87,88,89
  • 字符串中的下一个数字是从2到9的数字。
  • 最后6个数字是从0到9的任意数字。

此外,我可以在检查中允许以下数字。

  • 0878123456 -0更改+359的值
  • 00359878123456 -其中00更改+的值

这就是我现在的位置

代码语言:javascript
运行
复制
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ValidatePhoneNumber {
  public static void main(String[] argv) {

      String sPhoneNumber = "+35987";
      //String sPhoneNumber = "605-88899991";
      //String sPhoneNumber = "605-888999A";

      Pattern pattern = Pattern.compile("^\\+([3][5][9]){[87],[88],[89]}");
      Matcher matcher = pattern.matcher(sPhoneNumber);

      if (matcher.matches()) {
          System.out.println("Phone Number Valid");
      }
      else
      {
          System.out.println("Phone Number Not Valid");
      }
 }
}

EDITED>

我正在检查数字是否符合这个标准,并且只打印这一行。这是我的密码。

代码语言:javascript
运行
复制
public static void main(String[] args) throws IOException {

        // Pattern pattern = Pattern.compile("((\\+|00)359|0)8[7-9][2-9]\\d{6}$"); //checks evaluation of phone number
         Pattern p = Pattern.compile("^((\\+|00)359|0)8[7-9][2-9]\\d{6}$");

         File inFile = new File ("phonebook.txt");

          Scanner sc = new Scanner (inFile);
          while (sc.hasNextLine())
          {
            String line = sc.nextLine();
            if(line.matches("^((\\+|00)359|0)8[7-9][2-9]\\d{6}$")) // here that code doesn't work
            {
            System.out.println (line);
            }
          }
          sc.close();
        }

文件phonebook.txt包含:名称和编号

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-15 11:41:01

代码语言:javascript
运行
复制
import java.util.regex.*;
public class Test{
  public static void main(String[] args){
    String mob="+359878123456"; 
    Pattern p2 = Pattern.compile("^((\\+|00)359|0)(\\-|\\s)?8[7-9][2-9](\\-|\\s)?\\d{3}(\\s|\\-)?\\d{3}$");
    boolean b = p2.matcher("+359-878-123456").matches();
    if(b) System.out.println("True1");

    b = p2.matcher("+359 878 123 456").matches();
    if(b) System.out.println("True2");

    b = p2.matcher("+359-878-123-456").matches();
    if(b) System.out.println("True3");

    b = p2.matcher("+359-878123456").matches();
    if(b) System.out.println("True4");

    b = p2.matcher("00359-878123456").matches();
    if(b) System.out.println("True5");

    b = p2.matcher("0-878-123456").matches();
    if(b) System.out.println("True6");

    b = p2.matcher("+359878123456").matches();
    if(b) System.out.println("True7");

    b = p2.matcher("359878123456").matches(); // without + or 00
    if(b) System.out.println("True8");
    else System.out.println("FALSE8");

    b = p2.matcher("123478123456").matches(); 
    if(b) System.out.println("True9");
    else System.out.println("FALSE9");

  }
}

更新的

phonebook.txt

代码语言:javascript
运行
复制
Sagar +359883123456
Test 00359883123565
Someone 0883123456
People 1234567890  // this will not be printed
Test1 +359873123456

Sample.java

代码语言:javascript
运行
复制
import java.util.*;
import java.util.regex.*;
import java.io.*;
public class Sample{
public static void main(String[] args){
 	try{
          File inFile = new File ("phonebook.txt");

          Scanner sc = new Scanner (inFile);
          while (sc.hasNextLine())
          {
            String line = sc.nextLine();
            if(line.matches("^((.)*\\s)?((\\+|00)359|0)8[7-9][2-9]\\d{6}$")) // here that code doesn't work
            {
            System.out.println (line);
            }
          }
          sc.close();
}catch(Exception e){}
        }
}

结果

代码语言:javascript
运行
复制
C:\Users\acer\Desktop\Java\programs>javac Sample.java

C:\Users\acer\Desktop\Java\programs>java Sample
Sagar +359883123456
Test 00359883123565
Someone 0883123456
Test1 +359873123456

票数 5
EN

Stack Overflow用户

发布于 2017-02-15 11:34:10

试试这个正则表达式:

代码语言:javascript
运行
复制
Pattern pattern = Pattern.compile("^(((\\+|00)359)|0)8[7-9][2-9][0-9]{6}$");

意为的演示。

票数 4
EN

Stack Overflow用户

发布于 2017-02-15 11:28:55

我想你需要在0-9之间加6个数字

代码语言:javascript
运行
复制
    public static void main(String ...args){
      String phoneNumber="+359878123456";

      Pattern pattern = Pattern.compile("^(\\+|0|00)3598[789][2-9][0-9]{6}");
      Matcher matcher = pattern.matcher(phoneNumber);
      System.out.println(matcher.matches());
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42247918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档