检查URL协议的正则表达式

5

目前使用:

@"^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?$

我该如何使 http:// 不是必需的,但如果存在,则必须写成 http:// 呢?

1
请注意,(0-9)* 表示零个或多个 0-9(字面意思)。我认为你想要 [0-9]* 或者 \d* - Gumbo
我甚至会说(:[0-9]+)?因为据我所知,htt p://example.com:/并不是很有用,htt p://example.com:1:2:3:4也不是。 - Wrikken
1个回答

14
^(ht|f)tp(s?)\:\/\/

通过

^(?:(ht|f)tp(s?)\:\/\/)?

尽管 (?: 让我笑了:没有捕获实际的 'http'/'https' 等,但仍然捕获了 'ht' 和 's'。 - Wrikken
@Wrikken:是的,我知道。我不想改变捕获组编号,以防万一原帖在其他地方有所依赖... - Jens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接