gpt4 book ai didi

java - 带括号的标准电话号码的电话号码正则表达式

转载 作者:搜寻专家 更新时间:2023-10-31 19:56:18 26 4
gpt4 key购买 nike

这是一个关于 Java 正则表达式的问题。我到处都看过,但找不到与我需要的东西相似的东西。此外,我自己也花了几个小时尝试。

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

我的字段之一是让用户输入 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;
}

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

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

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

Edit2:问题已回答,但添加了每个 Bohemians 提示的样本,以便 future 遇到这篇文章的学生可以利用它。抱歉,我是新手!

需要看起来像:

(123) 456-7890

最佳答案

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

将其更改为:

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

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

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

双反斜杠转义特殊字符以隐藏它们的特殊含义,就像在告诉:

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

关于java - 带括号的标准电话号码的电话号码正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16129115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com