【问题标题】:Regex for phone number with standard phone number with brackets带有括号的标准电话号码的电话号码的正则表达式
【发布时间】:2013-04-14 07:01:34
【问题描述】:

这是一个关于 Java 中 RegEx 的问题。我到处寻找,但找不到与我需要的相似的东西。另外,我自己也花了好几个小时尝试。

我在用 Java 编写的学校实验室的最后一部分。我使用 Eclipse 作为我的编译器。我已经使用 Swing 组件构建了一个会员应用程序,

我的一个字段是让用户输入 10 位数的电话号码。 但是,我必须将此设置为 JFormatted 文本字段,以这种格式屏蔽文本框:“(###)###-####”。因此,当程序加载时,该文本框如下所示:“(_) -___”

现在,我需要做的就是有一个正则表达式来确保用户输入 10 位数字。但是,我需要它来处理我上面使用的掩码格式。这是我目前所拥有的:

pattern = Pattern.compile("\\d{3}\\s\\d{3}-\\d{4}");
    matcher = pattern.matcher(phoneText.getText());
    if (!matcher.find())
    {
        phoneText.requestFocus();
        JOptionPane.showMessageDialog(null, "Phone entered incorrectly.  Phone should be:\n" +
                "10 numeric digits.",
                "A D D   E R R O R",JOptionPane.ERROR_MESSAGE);
        return;
    }

我相信我已将正则表达式写入它接受掩码格式中的空格和破折号的位置,但我不知道如何包含括号。

编辑:按照 Andrew Thomas 的提示以正确的格式添加问题:

我需要在我的正则表达式中添加什么以包含已在格式化文本字段中的括号?

Edit2:已回答问题,但根据波西米亚提示添加示例,以便将来遇到此帖子的学生可以使用它。抱歉,我是新手!

需要看起来像:

(123) 456-7890

【问题讨论】:

  • “这是一个关于 Java 中 RegEx 的问题” 可能是,但因为没有问题。你有什么问题?
  • 我想知道要添加到我的正则表达式中以包含已在格式化文本字段中的括号。
  • 什么,正则表达式必须精确匹配吗?请列举一些例子来说明你的意图
  • “我需要在我的正则表达式中添加什么以包含格式化文本字段中已经存在的括号?” 是一个问题,如果这是您的问题,请edit it into the question。有些人会搜索“?” (“不是你要找的答案?” 他们会直接进入下一个实际问题。只是一个提示..
  • 哦,哇,你说的很有道理。将来会这样做,对此感到抱歉。

标签: java regex eclipse


【解决方案1】:

您必须匹配 ()(围绕前 3 位数字)

改成:

pattern = Pattern.compile("\\(\\d{3}\\)\\s\\d{3}-\\d{4}");
                           ^^^      ^^^

如您所见,我在() 之前添加了\\为什么

有些字符有特殊含义。由于正则表达式在 Java 中是字符串,因此您需要通过 \\(在 Java 中表示单个 \)对它们进行转义。

双反斜杠转义特殊字符以抑制其特殊含义,就像在告诉:

“不要把(当作特殊字符,把它当作普通字符(

【讨论】:

  • 我什至不确定这是他想要的:/
  • 他想匹配"(###) ###-####",其中#是数字。
  • 嘿 Maroun Maroun 这正是我想要的,非常感谢。我没有在左括号和右括号之前添加双反斜杠。我觉得很可笑。
  • @AbinThomas 这就是我们从错误中学习的方式。祝你好运:)
  • @AbinThomas 你需要知道括号有特殊含义才能知道转义是必要的。
【解决方案2】:

您可以使用\\(\\) 来使用括号,试试这个:

Pattern.compile("\\(\\d{3}\\)\\s\\d{3}-\\d{4}");

【讨论】:

  • 谢谢。是我没有反斜杠让我搞砸了!
【解决方案3】:

这是一个快速的解决方案,当您需要在文本字段/电话号码字段中添加括号时,请注意这不是正则表达式,它基于 jquery

http://ashfaqahmed.net/jquery-add-prefix-postfix-on-phone-number-field/

【讨论】:

    猜你喜欢
    • 2015-09-17
    • 1970-01-01
    • 2017-09-23
    • 2014-02-15
    • 2017-04-23
    相关资源
    最近更新 更多