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

为当前最终发行版之前的所有版本提供支持
回复
jerry_zhou
帖子: 52
注册时间: 2008-07-27 11:36
送出感谢: 0
接收感谢: 0
联系:

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

#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
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

#2

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

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

#3

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

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


要允许带端口(可有可不有)
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

#4

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

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

我不会JS。 :cry:
● 鸣学
头像
sevk
帖子: 2059
注册时间: 2007-05-08 16:26
系统: arch
来自: 火星内核某分子内某原子核内
送出感谢: 19 次
接收感谢: 6 次
联系:

#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
回复

回到 “老旧版本支持”