Regex 正则表达式:匹配没有字母的电话号码

Regex 正则表达式:匹配没有字母的电话号码,regex,oracle,numbers,expression,letter,Regex,Oracle,Numbers,Expression,Letter,我试图在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-_14

我试图在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"
Input: "044444-d4(54)1d-_14455"
Match1: "044444-"
Match2: "4(54)1"
Match3: "14455"
Input: "+904  4-4(54)1-_14455"
Match1: "+904  4-4(54)1-_14455"
-->数字-->中的“d”应不匹配

示例2:

Input: " 044-d4(54)1-_14455"
Match: "4(54)1-_14455"
Input: "044444-d4(54)1d-_14455"
Match1: "044444-"
Match2: "4(54)1"
Match3: "14455"
Input: "+904  4-4(54)1-_14455"
Match1: "+904  4-4(54)1-_14455"
-->数字-->中的两个“d”应不匹配

示例3:

Input: " 044-d4(54)1-_14455"
Match: "4(54)1-_14455"
Input: "044444-d4(54)1d-_14455"
Match1: "044444-"
Match2: "4(54)1"
Match3: "14455"
Input: "+904  4-4(54)1-_14455"
Match1: "+904  4-4(54)1-_14455"
-->对!我希望这一个是匹配的

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


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

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

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