【问题标题】:How to build indonesia phone number regex如何建立印度尼西亚电话号码正则表达式
【发布时间】:2021-03-22 15:01:16
【问题描述】:

这些是印度尼西亚的一些电话号码

08xxxxxxxxx(最少 11 个字符)

08xxxxxxxxxxx(总是以 08 开头)

我发现这个很有用

Regex regex = new Regex(@"08[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]");

但是,它只支持 12 个字符,如果我将它们更改为以下正则表达式

Regex regex = new Regex(@"08[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]");

它只支持 11 个字符,我如何使正则表达式验证以 08 开头并且最小长度为 11?

【问题讨论】:

  • 将来,regexpal.com 很有用。让您测试正则表达式并提供快速参考指南。
  • 对不起,我以前从未听说过 regexpal.com :( 还是谢谢你!:)
  • @Cignitor 你的意思是 11-12 个 nummers,还是至少 11 个可能更多?
  • @CoderOfHonor 至少包含 11 个字符,这意味着,可能包含超过 20 个字符或更多 :)

标签: c# regex


【解决方案1】:
^08[0-9]{9,}$

{9,} 表示“至少 9 个”,但可能更多。

我将其更改为 9 以说明前两位数字(加起来为 11)。

【讨论】:

  • 正则表达式仍然接受值 "08123123123123asd" 。它假设只接受最少 11 个字符的数字
  • 改成^08[0-9]{9,}$即可。 C# 也可能有一个“匹配整个表达式”方法(Java 有),但我不确定
  • 好的,你能把你的正则表达式改成^08[0-9]{9,}$吗?所以像我这样的其他印度尼西亚人可以很容易地找到答案:)
【解决方案2】:
08\d{9,10}

翻译为“以 08 开头”;最少 11 位,最多 12 位数字。

编辑:计数。

【讨论】:

  • 哇!为什么这么多赞?这意味着 包含 一个以 08 开头的字符串。此外,如果 ^ 位于开头,则最小长度将为 13。
  • 在附加的 cmets 中,它可能应该是:08\d{9,10} 或 08\d{9,} 作者不清楚是否需要最多 12 个,另外,作者没有说明这是在行首,所以没有 ^ 或者如果它是行尾,所以没有 $。
  • 不应该有^开头和$结尾吗?
  • 可能是。但是,正在工作的那些不包含开始/结束,因此添加 ^ 和/或 $ 将是与给出的工作示例不同的检查。所以,如果当前的数字嵌入到句子“Frank's number is 08123456789”中,那么额外的^就找不到了,但是作者的例子会找到。
  • @JohnS。那么它至少不应该从 11 更改为 9 吗?请记住,08 的前缀是总数的一部分。
【解决方案3】:

这个模式怎么样?

^08\d{9,10}$

这将检查 11 到 12 个字符,包括 08

【讨论】:

  • 这不是 op 想要的......应该是 {9,}
  • @Some1.Kill.The.DJ 所以允许这种模式? 081234567891234125 ?
  • @JW。他从来没有说过最大限制
  • 不错,应该有人问他这是什么意思。
【解决方案4】:

我会添加更完整的版本,这里是(带数字分组)

([\[\(])?(?:(\+62)|62|0)\1? ?-? ?8(?!0|4|6)\d(?!0)\d\1? ?-? ?\d{3,4} ?-? ?\d{3,5}(?: ?-? ?\d{3})?\b

它会接受这样的格式

(0811) 123 123

[62] 812 1234567

0812 345 6789

+62856123456789

0878-123-123-123

[+62823] 1234 - 56789 ---> 我相信这是截至发稿时最长的电话号码

【讨论】:

    【解决方案5】:
    ((\+62 8\d{2}([ -])|08\d{2}([ -]?)|\+628\d{2})\d{4}(\3\4)\d{2,5})
    

    这将接受最常用的样式,例如
    08xx xxxx xxxx
    08xxxxxxxxxxxx
    08xx-xxxx-xxxx
    +628xxxxxxxxxx
    +62 8xx xxxx xxxx
    +62 8xx-xxxx-xxxx
    这也将检查 11-13 长数字
    抱歉语法问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 2022-01-07
      • 2022-01-07
      • 1970-01-01
      • 2013-08-23
      • 1970-01-01
      • 2017-09-23
      相关资源
      最近更新 更多