【问题标题】:Regular Expression validating hyperlink for export to Excel正则表达式验证超链接以导出到 Excel
【发布时间】:2010-11-17 16:31:41
【问题描述】:

我有一个从用户那里获取输入的 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:// 开头,我不知道如何说忽略所有内容。

【问题讨论】:

    标签: excel hyperlink fileshare


    【解决方案1】:
     ^(?:(?:\\|(?:ht|f)tps?://)\S+|(?!\\|(?:ht|f)tps?://).*)$
    

    解释:

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

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

    【讨论】:

      【解决方案2】:

      编辑:哎呀为时尚早。

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

      第三次编辑

      我们开始吧!

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-07
        • 2013-01-21
        相关资源
        最近更新 更多