分页: 1 / 1
请教:如何判断一个变量是否为手机号码?
发表于 : 2010-08-12 2:31
由 fengjie
请教:如何判断一个变量是否为手机号码?
手机号码:
第1位必须为1,第2位必须为3、5、8其中一个,后面9位0-9任意数字
如果是正确的手机号码则输出true,否则输出fail
请问该如何写?新手,望指教,谢谢!
Re: 请教:如何判断一个变量是否为手机号码?
发表于 : 2010-08-12 7:10
由 luodayuan
貌似用正则表达式能解决问题,具体怎么解决你在思考一下吧!
Re: 请教:如何判断一个变量是否为手机号码?
发表于 : 2010-08-12 9:50
由 c\nc
bash 的话,试试这个,我没试过
代码: 全选
if [[ $num =~ ^1[358][0-9]{9}$ ]]; then ...
Re: 请教:如何判断一个变量是否为手机号码?
发表于 : 2010-08-12 10:53
由 pityonline
借用楼上的语句可以这样:
代码: 全选
#!/bin/bash
echo type a number
read num
if [[ $num =~ ^1[358][0-9]{9}$ ]];
then
echo true
else
echo false
fi
Re: 请教:如何判断一个变量是否为手机号码?
发表于 : 2010-08-12 11:32
由 trigger
借用楼上语句写个循环
代码: 全选
#!/bin/bash
read -p "keyin a cell number here : " cell
while :
do
if [[ $cell =~ ^1[358][0-9]{9}$ ]]; then
echo "yeah , a cell"
break
else
read -p "not a cell , keyin again : " cell
fi
done
Re: 请教:如何判断一个变量是否为手机号码?
发表于 : 2010-08-12 12:32
由 eexpress
lol
一层一层的加强。
其实2楼就说了。
Re: 请教:如何判断一个变量是否为手机号码?
发表于 : 2010-08-12 13:39
由 fengjie
达到目的了,谢谢LS的几位前辈!
代码: 全选
#!/bin/bash
#判断一个变量是否为手机号码
Number="13800138000"
if [[ $Number =~ ^1[358][0-9]{9}$ ]];
then
echo "true"
else
echo "fail"
fi
其实这样写我才比较容易看懂,
只是还是不太明白1前面的~ ^和{9}后面的$是什么意思
望能继续指教,谢谢!
Re: 请教:如何判断一个变量是否为手机号码?
发表于 : 2010-08-12 13:47
由 pityonline
fengjie 写了:
只是还是不太明白1前面的~ ^和{9}后面的$是什么意思
望能继续指教,谢谢!
我只知道^在这里表示字符串的开始,$表示结尾,我也搞不清为嘛要加~这个符号。
Re: 请教:如何判断一个变量是否为手机号码?
发表于 : 2010-08-12 20:15
由 anticlockwise
pityonline 写了:fengjie 写了:
只是还是不太明白1前面的~ ^和{9}后面的$是什么意思
望能继续指教,谢谢!
我只知道^在这里表示字符串的开始,$表示结尾,我也搞不清为嘛要加~这个符号。
加一个~是表示正则比配,否则是直接字符串匹配~~
Re: 请教:如何判断一个变量是否为手机号码?
发表于 : 2010-08-12 22:48
由 Jarson
anticlockwise 写了:pityonline 写了:fengjie 写了:
只是还是不太明白1前面的~ ^和{9}后面的$是什么意思
望能继续指教,谢谢!
我只知道^在这里表示字符串的开始,$表示结尾,我也搞不清为嘛要加~这个符号。
加一个~是表示正则比配,否则是直接字符串匹配~~
学习

Re: 请教:如何判断一个变量是否为手机号码?
发表于 : 2010-08-12 23:16
由 fengjie
Jarson 写了:anticlockwise 写了:pityonline 写了:fengjie 写了:
只是还是不太明白1前面的~ ^和{9}后面的$是什么意思
望能继续指教,谢谢!
我只知道^在这里表示字符串的开始,$表示结尾,我也搞不清为嘛要加~这个符号。
加一个~是表示正则比配,否则是直接字符串匹配~~
学习

解释得很详细,谢谢!学习了

Re: 请教:如何判断一个变量是否为手机号码?
发表于 : 2010-08-12 23:30
由 fanhe
反正正则肯定能搞定
Re: 请教:如何判断一个变量是否为手机号码?
发表于 : 2010-08-12 23:56
由 tusooa
代码: 全选
tlcr: 0 庚寅年七月初四日 23:31:43 ~
● set 13123456789
tlcr: 0 庚寅年七月初四日 23:52:38 ~
● [[ $1 =~ ^1[358][0-9]{9}$ ]] && echo true || echo fail
true
不是一行搞定阿。
为什么要这么多?