Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串上的正则表达式_Java_Regex - Fatal编程技术网

Java 字符串上的正则表达式

Java 字符串上的正则表达式,java,regex,Java,Regex,我有一根像下面这样的线 String phone = (123) 456-7890 现在我想让我的程序验证我的输入是否与字符串“phone”相同 我做了以下几件事 if(phone.contains("([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]")) { //display pass } else { //display fail } 它不起作用。我也试过其他组合。什么都没用 问题: 1.如果不使用上述“模式”

我有一根像下面这样的线

String phone = (123) 456-7890
现在我想让我的程序验证我的输入是否与字符串“phone”相同

我做了以下几件事

if(phone.contains("([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]")) {

   //display pass
}
else {

   //display fail
}
它不起作用。我也试过其他组合。什么都没用

问题: 1.如果不使用上述“模式”,我如何实现这一点? 2.如何使用模式进行此操作。我尝试了以下的模式

Pattern=Pattern.compile((\d+); Matcher match=pattern.Matcher(电话)

检查字符串是否与模式匹配:

if (phone.matches("\\(\\d{3}\\) \\d{3}-\\d{4}")) {
    //Displaypass
}
模式是一个正则表达式。因此,我不得不避开圆括号,因为它们在正则表达式中有特殊含义(它们表示捕获组)

contains()
仅检查字符串是否包含传递给它的子字符串。

检查字符串是否与模式匹配:

if (phone.matches("\\(\\d{3}\\) \\d{3}-\\d{4}")) {
    //Displaypass
}
模式是一个正则表达式。因此,我不得不避开圆括号,因为它们在正则表达式中有特殊含义(它们表示捕获组)


contains()

"([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]"
它包含
,这些都有特殊的含义。逃离他们

"\([0-9][0-9][0-9]\) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]"
在期末考试中,你还必须退出你的
\

"\\([0-9][0-9][0-9]\\) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]"

我不打算深入探讨正则表达式语法,但您的正则表达式肯定有问题

"([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]"
它包含
,这些都有特殊的含义。逃离他们

"\([0-9][0-9][0-9]\) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]"
在期末考试中,你还必须退出你的
\

"\\([0-9][0-9][0-9]\\) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]"
你可以这样写:

Pattern pattern = Pattern.compile("\\(\\d{3}\\) \\d{3}-\\d{4}");
Matcher matcher = pattern.matcher(sPhoneNumber);

if (matcher.matches()) {
    System.out.println("Phone Number Valid");
}
有关更多信息,请访问。

您可以这样写:

Pattern pattern = Pattern.compile("\\(\\d{3}\\) \\d{3}-\\d{4}");
Matcher matcher = pattern.matcher(sPhoneNumber);

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

有关更多信息,您可以访问。

您的问题似乎是没有跳过括号,因此您的正则表达式失败了。试试这个:

\([0-9][0-9][0-9]\) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]

您的问题似乎是没有跳出括号,因此您的正则表达式失败了。试试这个:

\([0-9][0-9][0-9]\) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]
这很有效

String PHONE_REGEX = "[(]\\b[0-9]{3}\\b[)][ ]\\b[0-9]{3}\\b[-]\\b[0-9]{4}\\b";
String phone1 = "(1234) 891-6762";
Boolean b = phone1.matches(PHONE_REGEX);
System.out.println("is e-mail: " + phone1 + " :Valid = " + b);
String phone2 = "(143) 456-7890";
b = phone2.matches(PHONE_REGEX);
System.out.println("is e-mail: " + phone2 + " :Valid = " + b);
输出:

is phone: (1234) 891-6762 :Valid = false
is phone: (143) 456-7890 :Valid = true
这很有效

String PHONE_REGEX = "[(]\\b[0-9]{3}\\b[)][ ]\\b[0-9]{3}\\b[-]\\b[0-9]{4}\\b";
String phone1 = "(1234) 891-6762";
Boolean b = phone1.matches(PHONE_REGEX);
System.out.println("is e-mail: " + phone1 + " :Valid = " + b);
String phone2 = "(143) 456-7890";
b = phone2.matches(PHONE_REGEX);
System.out.println("is e-mail: " + phone2 + " :Valid = " + b);
输出:

is phone: (1234) 891-6762 :Valid = false
is phone: (143) 456-7890 :Valid = true

您应该转义
。它们在正则表达式中有特殊的含义。您应该转义
。它们在正则表达式+1中有特殊含义。你可能想说一些关于在正则表达式中转义具有特殊意义的字符的事情。工作非常完美。。谢谢@jlordo+1。你可能想说一些关于在正则表达式中转义具有特殊意义的字符的事情。工作非常完美。。谢谢@jlordo