java - 字符串上的正则表达式

标签 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. 如果不使用上面的“模式”,我怎样才能实现这一目标? 2. 如何用模式来做到这一点。我尝试了如下模式

模式pattern = Pattern.compile("(\d+)"); 匹配器 match =pattern.matcher(phone);

if (match.find()) {
   //Displaypass
}

最佳答案

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

if (phone.matches("\\(\\d{3}\\) \\d{3}-\\d{4}")) {
    //Displaypass
}

该模式是正则表达式。因此,我必须转义圆括号,因为它们在正则表达式中具有特殊含义(它们表示捕获组)。

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

关于java - 字符串上的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16341569/

相关文章:

java - Netbeans 中服务器库和类库的区别?

java - 如何使用eclipse快速找到java项目中的main()?

java - 在 Java 中为文件线程化

regex - 如何使用 RegEx 获取 Ini 文件中的节名称

regex - 与 mod_rewrite 斗争

java - 将通用事件传递给 Guava EventBus?

java - 在带有 Play 框架 2.1.x 的 Eclipse 中使用多个项目

regex - 为什么正则表达式引擎选择从 `..X` 匹配模式 `.X|..X|X.`?

python - 快速正则表达式 Python 3 不起作用

javascript - 删除两个字符串正则表达式之间的所有内容