分页: 1 / 1

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

发表于 : 2008-08-20 10:59
jerry_zhou
/^(?:\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的来写.

先谢谢了

发表于 : 2008-08-20 11:04
eexpress
就是开头用w,中间没? 。包含中间的.
:?:

发表于 : 2008-08-20 11:06
jerry_zhou
eexpress
不一定是用www.开头的
reseller.yahoo.com:8080/reseller
这个也是正确的


要允许带端口(可有可不有)

发表于 : 2008-08-20 11:15
eexpress
egrep -v '(:\/\/|\?)'
只会这样。

我不会JS。 :cry:

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

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

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

/\:\/|=|\?/ 的意思:
看是否包含 \: 或=或\?