请教:如何判断一个变量是否为手机号码?

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
fengjie
帖子: 130
注册时间: 2008-03-19 14:20
来自: 广西柳州
送出感谢: 1 次
接收感谢: 0

请教:如何判断一个变量是否为手机号码?

#1

帖子 fengjie » 2010-08-12 2:31

请教:如何判断一个变量是否为手机号码?
手机号码:
第1位必须为1,第2位必须为3、5、8其中一个,后面9位0-9任意数字
如果是正确的手机号码则输出true,否则输出fail
请问该如何写?新手,望指教,谢谢!
主板:ASUS P8Z77-V
CPU:Intel 酷睿i3 3200
内存:ADTA DDRⅢ 1600 8G
显卡:Intel® HD Graphic
声卡:Realtek ALC 892
有线网卡:Intel® 82579V
无线网卡:Qualcomm Atheros AR9485
硬盘:WDC WD6401AALS
电源:长城ATX-350SD静音大师
显示器:Samsung S24A350H
luodayuan
帖子: 19
注册时间: 2008-09-23 17:27
送出感谢: 0
接收感谢: 0

Re: 请教:如何判断一个变量是否为手机号码?

#2

帖子 luodayuan » 2010-08-12 7:10

貌似用正则表达式能解决问题,具体怎么解决你在思考一下吧!
头像
c\nc
帖子: 231
注册时间: 2007-12-25 12:51
送出感谢: 0
接收感谢: 0

Re: 请教:如何判断一个变量是否为手机号码?

#3

帖子 c\nc » 2010-08-12 9:50

bash 的话,试试这个,我没试过

代码: 全选

if [[ $num =~ ^1[358][0-9]{9}$ ]]; then ...
头像
pityonline
帖子: 3864
注册时间: 2008-12-09 12:44
来自: 北京
送出感谢: 0
接收感谢: 2 次
联系:

Re: 请教:如何判断一个变量是否为手机号码?

#4

帖子 pityonline » 2010-08-12 10:53

借用楼上的语句可以这样:

代码: 全选

#!/bin/bash
echo type a number
read num
if [[ $num =~ ^1[358][0-9]{9}$ ]];
then
        echo true
else
        echo false
fi
Pity is the bomp!
活着就是折腾!生命不息,折腾不止!
看这帮家伙在干什么?@pityonline/u
Dropbox+Vps+PC 跑起来了!这是邀请链接
头像
trigger
帖子: 1585
注册时间: 2006-10-25 18:08
送出感谢: 0
接收感谢: 0

Re: 请教:如何判断一个变量是否为手机号码?

#5

帖子 trigger » 2010-08-12 11:32

借用楼上语句写个循环

代码: 全选

#!/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
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: 请教:如何判断一个变量是否为手机号码?

#6

帖子 eexpress » 2010-08-12 12:32

lol
一层一层的加强。

其实2楼就说了。
● 鸣学
头像
fengjie
帖子: 130
注册时间: 2008-03-19 14:20
来自: 广西柳州
送出感谢: 1 次
接收感谢: 0

Re: 请教:如何判断一个变量是否为手机号码?

#7

帖子 fengjie » 2010-08-12 13:39

:em11
达到目的了,谢谢LS的几位前辈!

代码: 全选

#!/bin/bash
#判断一个变量是否为手机号码
Number="13800138000"
if [[ $Number =~ ^1[358][0-9]{9}$ ]];
then
	 echo "true"
else
	 echo "fail"
fi
其实这样写我才比较容易看懂,
只是还是不太明白1前面的~ ^和{9}后面的$是什么意思
望能继续指教,谢谢!
主板:ASUS P8Z77-V
CPU:Intel 酷睿i3 3200
内存:ADTA DDRⅢ 1600 8G
显卡:Intel® HD Graphic
声卡:Realtek ALC 892
有线网卡:Intel® 82579V
无线网卡:Qualcomm Atheros AR9485
硬盘:WDC WD6401AALS
电源:长城ATX-350SD静音大师
显示器:Samsung S24A350H
头像
pityonline
帖子: 3864
注册时间: 2008-12-09 12:44
来自: 北京
送出感谢: 0
接收感谢: 2 次
联系:

Re: 请教:如何判断一个变量是否为手机号码?

#8

帖子 pityonline » 2010-08-12 13:47

fengjie 写了: 只是还是不太明白1前面的~ ^和{9}后面的$是什么意思
望能继续指教,谢谢!
我只知道^在这里表示字符串的开始,$表示结尾,我也搞不清为嘛要加~这个符号。
Pity is the bomp!
活着就是折腾!生命不息,折腾不止!
看这帮家伙在干什么?@pityonline/u
Dropbox+Vps+PC 跑起来了!这是邀请链接
头像
anticlockwise
帖子: 2393
注册时间: 2007-03-01 20:46
来自: 湖南长沙
送出感谢: 0
接收感谢: 0
联系:

Re: 请教:如何判断一个变量是否为手机号码?

#9

帖子 anticlockwise » 2010-08-12 20:15

pityonline 写了:
fengjie 写了: 只是还是不太明白1前面的~ ^和{9}后面的$是什么意思
望能继续指教,谢谢!
我只知道^在这里表示字符串的开始,$表示结尾,我也搞不清为嘛要加~这个符号。
加一个~是表示正则比配,否则是直接字符串匹配~~
头像
Jarson
帖子: 2371
注册时间: 2008-07-21 9:44
来自: 深圳
送出感谢: 0
接收感谢: 0
联系:

Re: 请教:如何判断一个变量是否为手机号码?

#10

帖子 Jarson » 2010-08-12 22:48

anticlockwise 写了:
pityonline 写了:
fengjie 写了: 只是还是不太明白1前面的~ ^和{9}后面的$是什么意思
望能继续指教,谢谢!
我只知道^在这里表示字符串的开始,$表示结尾,我也搞不清为嘛要加~这个符号。
加一个~是表示正则比配,否则是直接字符串匹配~~
学习 :em11
头像
fengjie
帖子: 130
注册时间: 2008-03-19 14:20
来自: 广西柳州
送出感谢: 1 次
接收感谢: 0

Re: 请教:如何判断一个变量是否为手机号码?

#11

帖子 fengjie » 2010-08-12 23:16

Jarson 写了:
anticlockwise 写了:
pityonline 写了:
fengjie 写了: 只是还是不太明白1前面的~ ^和{9}后面的$是什么意思
望能继续指教,谢谢!
我只知道^在这里表示字符串的开始,$表示结尾,我也搞不清为嘛要加~这个符号。
加一个~是表示正则比配,否则是直接字符串匹配~~
学习 :em11
解释得很详细,谢谢!学习了
:em09
主板:ASUS P8Z77-V
CPU:Intel 酷睿i3 3200
内存:ADTA DDRⅢ 1600 8G
显卡:Intel® HD Graphic
声卡:Realtek ALC 892
有线网卡:Intel® 82579V
无线网卡:Qualcomm Atheros AR9485
硬盘:WDC WD6401AALS
电源:长城ATX-350SD静音大师
显示器:Samsung S24A350H
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45
送出感谢: 0
接收感谢: 9 次

Re: 请教:如何判断一个变量是否为手机号码?

#12

帖子 fanhe » 2010-08-12 23:30

反正正则肯定能搞定
tusooa
帖子: 6546
注册时间: 2008-10-31 22:12
系统: 践兔
送出感谢: 6 次
接收感谢: 10 次
联系:

Re: 请教:如何判断一个变量是否为手机号码?

#13

帖子 tusooa » 2010-08-12 23:56

代码: 全选

tlcr: 0 庚寅年七月初四日 23:31:43 ~
● set 13123456789
tlcr: 0 庚寅年七月初四日 23:52:38 ~
● [[ $1 =~ ^1[358][0-9]{9}$ ]] && echo true || echo fail
true
不是一行搞定阿。
为什么要这么多?

代码: 全选

] ls -ld //
回复

回到 “Shell脚本”