您好,我是正则表达式的新手,我不知道自己在做什么。这就是我寻求帮助的原因。
我有以下电话号码 +359878123456,我需要检查电话号码是否符合条件。
- +359 是确切的分机
- 第二个 2 个数字是运算符(operator)号码和以下 3 个数字之一:87、88、89
- 字符串中的下一个数字是 2 到 9 之间的数字
- 最后6个数字是0-9中的任意数字
此外,我可以在检查中允许以下数字。
- 0878123456 - 其中 0 更改 +359 的值
- 00359878123456 - 其中 00 更改 + 的值
我在这里
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");
}
}
}
已编辑>
我正在检查数字是否符合该标准,并且只打印该行。 这是我的代码。
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 文件包含:姓名和号码
最佳答案
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");
}
}
已更新
电话簿.txt
Sagar +359883123456
Test 00359883123565
Someone 0883123456
People 1234567890 // this will not be printed
Test1 +359873123456
示例.java
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){}
}
}
结果
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
关于java - 如何使用正则表达式检查 Java 中的确切电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42247918/