bash如何判断输入字符串是否符合正则表达式

sh/bash/dash/ksh/zsh等Shell脚本
回复
slowant
帖子: 7
注册时间: 2008-12-01 16:31

bash如何判断输入字符串是否符合正则表达式

#1

帖子 slowant » 2009-10-02 10:33

比如,现在我要判断我输入的邮箱是否合法
read email
if [[ "$email" = "/[a-zA-Z]*@163.com\>/" ]]
then
echo "match"
else
echo "not match"
fi

这样不知道哪里有问题,请高手给个好点的判断方法,谢谢
头像
c\nc
帖子: 231
注册时间: 2007-12-25 12:51

Re: bash如何判断输入字符串是否符合正则表达式

#2

帖子 c\nc » 2009-10-02 10:38

用 if [[ $email =~ /正则表达式/ ]]
双引号可以省了。

补充一句:楼主的正则有问题 :em06
slowant
帖子: 7
注册时间: 2008-12-01 16:31

Re: bash如何判断输入字符串是否符合正则表达式

#3

帖子 slowant » 2009-10-02 10:54

c\nc 写了:用 if [[ $email =~ /正则表达式/ ]]
双引号可以省了。

补充一句:楼主的正则有问题 :em06
请问,有什么问题呢?
现在我改成这样:
1 #! /bin/sh
2
3 read email
4 if [[ $email = ~/[a-zA-Z]*\@163.com/ ]]
5 then
6 echo "match"
7 else
8 echo "not match"
9 fi

输入:
slowant@163.com
得到not match
头像
c\nc
帖子: 231
注册时间: 2007-12-25 12:51

Re: bash如何判断输入字符串是否符合正则表达式

#4

帖子 c\nc » 2009-10-02 14:25

不好意思,我也短路了,我给那个不是对的,这个是:

代码: 全选

[[ $email =~ ^[a-zA-Z]+@163\.com$ ]]
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: bash如何判断输入字符串是否符合正则表达式

#5

帖子 tusooa » 2009-11-15 13:57

代码: 全选

[a-zA-Z0-9_+\-]+@[a-zA-z0-9\-]+\.[a-zA-z]

代码: 全选

] ls -ld //
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: bash如何判断输入字符串是否符合正则表达式

#6

帖子 eexpress » 2009-11-15 20:27

163的邮箱,不能数字开头?
为什么要+
而不是列举全部可用字符
● 鸣学
回复