通过Regex检查可选值是否包含正确的字符

时间:2014-02-18 10:09:37

标签: regex bash

我正在使用这个正则表达式:

egrep "([+][0-9]{2})?[-][0-9]{3}[-][0-9]{3}([-][0-9]{4})$"

根据我的逻辑,可选值应为+,后跟2位数字=> +54

但是当我使用它时,我的输出低于输出:

+11-555-555-5555  #this is correct
+917-999-999-9999  #this is wrong

问题:是否有一些特殊的方法可以检查optional值是否包含regex中提到的内容或我使用的方法不正确?

1 个答案:

答案 0 :(得分:3)

试试这个正则表达式:

^([+][0-9]{2})?[-][0-9]{3}[-][0-9]{3}([-][0-9]{4})$

使用插入符号(^)时,必须在字符串的开头存在或不存在后跟两位数的序列+

另一方面;没有插入符号,重要的是字符串末尾的序列。初始序列是可选的。

这就是正则表达式错误匹配第二行的原因。