0

我有一个从用户那里获取输入的 Web 应用程序,通常采用文件路径、超链接或文件共享的形式,但并非总是如此。用户可以输入“\my.fileshare.com”、“ http://www.msdn.com ”或“在我的文件柜中”。这些输入被导出到 Excel 文件。但是,如果输入的形式是“\look on my desk”或“ http://here it is”(注意空格),则在导出并打开文件后,Excel 会引发描述性错误消息的,我引用,“错误”。

我在现有代码中添加了一个正则表达式验证器到用户输入和编辑这些位置的文本框。因为存在大量现有条目,验证器需要尽可能具体,并且只丢弃输入导致 Excel 导出中断。例如,“\Will Work”将起作用,“Will Work”也将起作用,“\This\will also work”。我需要一个正则表达式,如果字符串以 \、http://、https://、ftp://、ftps:// 开头,则服务器或文件共享名称中没有空格,如果有不要以\、http://、https://、ftp://、ftps://开头,不管怎样都可以。

我已经能够写出第一部分 ^(\\)[^ \]+(\. ) $|^(((ht|f)tp(s)?)://)[^ /]+( /. ) $

但我不知道如果它不以 \、http://、https://、ftp://、ftps:// 开头,该怎么说忽略所有内容。

4

2 回答 2

1
 ^(?:(?:\\|(?:ht|f)tps?://)\S+|(?!\\|(?:ht|f)tps?://).*)$

解释:

^ # 字符串开头
  (?: # 开始非捕获组
    (?:\\|(?:ht|f)tps?://)\S+ # "\, http, ftp" 后跟非空格
    | # 或者
    (?!\\|(?:ht|f)tps?://).* # NOT "\, http, ftp" 后跟任何内容
  ) # 结束非捕获组
$ # 字符串结尾

这是纯粹的、未转义的正则表达式。根据您的环境规则添加字符转义。

于 2009-08-07T13:08:09.173 回答
0

编辑:哎呀为时过早。

这个表达式仍然不允许“ http://www.google.com/hello world”:/

第三次编辑

开始了!

^(?:(?:\\|(?:ht|f)tps?://)[^ /\]+([/\].)?|(?!\\|(?:ht|f )tps?://). )$

于 2009-08-07T19:13:06.793 回答