我有以下REGEX表达式
^(\(?\+?(44|0{1}|0{2}4{2})[1-9]{1}[0-9]{9}\)?)?$
试图涵盖英国所有手机号码的可能性。通过在线REGEX测试器解析这个验证,这很好用,我很难让它在cornshell中正常工作
fn_validate_msisdn() {
MSISDN=$1
REGEX_PTN="^(\(?\+?(44|0{1}|0{2}4{2})[1-9]{1}[0-9]{9}\)?)?$"
if [ `echo $MSISDN | egrep -c $REGEX_PTN` -gt 0 ]
then
return 1
fi
return 0;
}
被召唤:
if [ ! `fn_validate_msisdn ${MSISDN}` ]
then
...
fi
然而,它似乎总是失败,无论是使用非法语法还是总是返回大于一。
一些测试数据:
447999999999 : OK
07999999999 : OK
4407948777622 : FAIL
43743874874387439843 : FAIL
任何建议都会很棒
答案 0 :(得分:1)
你的功能就是这样:
fn_validate_msisdn() {
MSISDN=$1
REGEX_PTN="^(\(?\+?(44|0{1}|0{2}4{2})[1-9]{1}[0-9]{9}\)?)?$"
echo "$MSISDN" | egrep -q "$REGEX_PTN";
}
然后:
fn_validate_msisdn 43743874874387439843
echo $?
1
fn_validate_msisdn 447999999999
echo $?
0
请记住,返回状态为0表示成功,1表示失败。