我正在使用这个正则表达式:
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
中提到的内容或我使用的方法不正确?
答案 0 :(得分:3)
试试这个正则表达式:
^([+][0-9]{2})?[-][0-9]{3}[-][0-9]{3}([-][0-9]{4})$
使用插入符号(^
)时,必须在字符串的开头存在或不存在后跟两位数的序列+
。
另一方面;没有插入符号,重要的是字符串末尾的序列。初始序列是可选的。
这就是正则表达式错误匹配第二行的原因。