Shell正则表达式怎么保证括号成对出现

Shell正则表达式如何保证括号成对出现?我遇到这样一个问题:要匹配7个数组,前3个数字可以用括号括起来,也可

Shell正则表达式如何保证括号成对出现?
我遇到这样一个问题:要匹配7个数组,前3个数字可以用括号括起来,也可以不用。
比如:
1234567            可以
(123)4567        可以
但是括号不成对就不行。比如:
(1234567  和   123)4567    就不可以。

我写了这样一个正则表达式: /^\(?[0-9]{3}\)?[0-9]{4}/
这个表达式没办法保证括号是成对的。该如何解决这个问题呢?怎么写才能将两个括号关联起来,让它们成对出现呢?
正则表达式 shell 括号成对出现
[解决办法]
只两种情况,使用或 '
[解决办法]
' 表达式..     这里用的egrep与grep -E等价

egrep '(^\([0-9]{3}\)[0-9]{4})
[解决办法]
(^[0-9]{7})'

例子:
echo '(123)4567' 
[解决办法]
 egrep '(^\([0-9]{3}\)[0-9]{4})
[解决办法]
(^[0-9]{7})'

echo '1234567' 
[解决办法]
 egrep '(^\([0-9]{3}\)[0-9]{4})
[解决办法]
(^[0-9]{7})'

echo '(1234567' 
[解决办法]
 egrep '(^\([0-9]{3}\)[0-9]{4})
[解决办法]
(^[0-9]{7})'

echo '123)4567' 
[解决办法]
 egrep '(^\([0-9]{3}\)[0-9]{4})
[解决办法]
(^[0-9]{7})'