关于一个正则表达式 在线等

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
jerry_zhou
帖子: 52
注册时间: 2008-07-27 11:36
联系:

关于一个正则表达式 在线等

#1

帖子 jerry_zhou » 2008-08-20 10:59

/^(?:\w+\.)+\w+(?:\:\d+)*(?:\/[\w\.]+)*$/

正则表达式如上, 这个表达事是用来验证URL的,但有如下规则
1.不能有协议,如:http://www.baidu.com,不能有http://, ftp://.......
2.不能带参数,如:www.baidu.com?user=jerry,不能有:?user=jerry
3.对于端口是允许的,可以有,可以没有. 如 reseller.yahoo.com:8080/reseller 或reseller.yahoo.com/reseller这2个都是正确的

我这个已经可以达到以上的标准, 但是'www.sheraton-taipei.com.tw' (这个是正确的) 这个就过不去, 原因是中间带了一个"-"符号我想请假下大家该怎么写. 说明下这个正则表达式是用JS的,所以请各位在回复的时候用JS的来写.

先谢谢了
上次由 jerry_zhou 在 2008-08-20 11:07,总共编辑 1 次。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#2

帖子 eexpress » 2008-08-20 11:04

就是开头用w,中间没? 。包含中间的.
:?:
● 鸣学
jerry_zhou
帖子: 52
注册时间: 2008-07-27 11:36
联系:

#3

帖子 jerry_zhou » 2008-08-20 11:06

eexpress
不一定是用www.开头的
reseller.yahoo.com:8080/reseller
这个也是正确的


要允许带端口(可有可不有)
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#4

帖子 eexpress » 2008-08-20 11:15

egrep -v '(:\/\/|\?)'
只会这样。

我不会JS。 :cry:
● 鸣学
头像
sevk
帖子: 2060
注册时间: 2007-05-08 16:26
系统: arch
来自: 火星内核某分子内某原子核内
联系:

#5

帖子 sevk » 2008-08-20 20:04

puts "==不合法==\n" if ('ww.ww.baidu.com/sss'=~ /\:\/|=|\?/ ) !=nil
如果你安装了ruby,可以运行 irb,测试这句.

意思是:
如果字符串:'ww.ww.baidu.com/sss' 匹配正则/\:\/|=|\?/ ,匹配就输出字符串: "==不合法==\n"

=~ 是返回匹配的位置,不匹配就返回 nil.

/\:\/|=|\?/ 的意思:
看是否包含 \: 或=或\?
笔记本 :
F208S : gentoo
A460P i3G D6 : UBUNTU + WIN7
UN43D1 : UBUNTU + WIN7
1000人超级QQ群 LINUX + WIN : 31465544 或 18210387
回复