使字符在正则表达式中可选

2022-09-02 00:22:38

我正在尝试验证一个(美国)电话号码,其中没有多余的字符。所以格式是1-555-555-5555,没有破折号,空格等,1是可选的。但是,我的正则表达式只会除了前导1的数字,并说没有正则的数字是无效的。以下是我使用的东西,我哪里出错了?

"^(1)\\d{10}$"

答案 1

用:

"^1?\\d{10}$"

这?表示“可选”。


答案 2

您尚未执行任何操作来使 1 成为可选项。你已经把它放在一个组中,但仅此而已。你想要这个:

"^1?\\d{10}$"

这基本上说要匹配(按此顺序):

  • 字符串的开头
  • (可选)字符“1”
  • 正好十位数
  • 字符串的末尾

有关更多详细信息,请查看模式的文档。例如,在“贪婪量词”部分中列出,如下所示:?

X?X,一次或根本不