【问题标题】:Regular Expression: Matching phone numbers without letters in it [duplicate]正则表达式:匹配没有字母的电话号码[重复]
【发布时间】:2020-01-25 15:08:42
【问题描述】:

我正在尝试为我的 PL/SQL 代码中的一些检查构建一个正则表达式(所以我正在使用可以使用 (POSIX) 标准草案 1003.2/D11.2 的 Oracle 数据库)。

我想匹配可能是电话号码的所有输入变量。我已经创建了这个正则表达式:

[+0-9][0-9- ()_]{4,20}

我唯一的问题(得到我想要的)是:如果输入字符串中有任何字母将由我的正则表达式测试,则正则表达式将在信件。

示例 1:

Input: " 044-d4(54)1-_14455"
Match: "4(54)1-_14455"

-->数字中的“d”-->应该有没有匹配

示例 2:

Input: "044444-d4(54)1d-_14455"
Match1: "044444-"
Match2: "4(54)1"
Match3: "14455"

--> 数字内有两个“d” --> 应该有没有匹配

示例 3:

Input: "+904  4-4(54)1-_14455"
Match1: "+904  4-4(54)1-_14455"

--> 正确!我想要这个匹配。

我只想这样修改我的正则表达式,如果电话号码中有任何字母,它就不会返回匹配项。 _-/() 等所有其他特殊字符都可以使用。

我已经用谷歌搜索过了,但我不是正则表达式方面的专家,所以我所有的尝试都没有成功......

【问题讨论】:

    标签: regex oracle numbers expression letter


    【解决方案1】:

    您可以在正则表达式中使用字符串开头 (^) 和字符串结尾 ($)。

    ^[+0-9][0-9- ()_]{4,20}$
    

    【讨论】:

      猜你喜欢
      • 2010-12-16
      • 1970-01-01
      • 2020-01-18
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      相关资源
      最近更新 更多