正则表达式验证超链接以导出到 Excel

发布于 2024-07-29 23:39:56 字数 795 浏览 10 评论 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)?)://)[^ /]+(/.< em>)$

但我不知道如何说忽略所有不以 \、http://、https://、ftp://、ftps:// 开头的内容。

I have a web application that takes input from a user, usually in the form of a filepath, hyperlink, or fileshare, but not always. A user may enter "\my.fileshare.com", "http://www.msdn.com", or "In my file cabinent". These inputs are exported to a Excel file. However, if the input is in the form of "\look on my desk" or "http://here it is" (notice the spaces), after the file is exported, and opened, Excel raises the ever so descriptive error message of, and I quote, "Error".

I'm adding to the existing code a regular expression validator to the textbox the user enters and edits these locations in. Because there are a large number of existing entries, the validator needs to be specific as possible, and only toss out the inputs that cause the Excel export to break. For example "\Will Work" will work, as will "Will Work", and "\This\will also work". I need a regular expression that if the string starts with \, http://, https://, ftp://, ftps://, the server or fileshare name does not have a space in it, and if it does not start with the \, http://, https://, ftp://, ftps://, its fine regardless.

I've been able to write the first part
^(\\)[^ \]+(\.)$|^(((ht|f)tp(s)?)://)[^ /]+(/.)$

but I can't figure out how to say ignore everything if it does not start with \, http://, https://, ftp://, ftps://.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

糖果控 2024-08-05 23:40:01

编辑:哎呀还为时过早。

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

第三次编辑

开始吧!

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

EDIT: Ooops premature.

This expression still doesn't allow "http://www.google.com/hello world" :/

EDIT FOR A THIRD TIME

Here we go!

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

紫瑟鸿黎 2024-08-05 23:39:59
 ^(?:(?:\\|(?:ht|f)tps?://)\S+|(?!\\|(?:ht|f)tps?://).*)$

解释:

^                                 # start-of string
  (?:                             # begin non-capturing group
    (?:\\|(?:ht|f)tps?://)\S+     # "\, http, ftp" followed by non-spaces
    |                             # or
    (?!\\|(?:ht|f)tps?://).*      # NOT "\, http, ftp" followed by anything
  )                               # end non-capturing group
$                                 # end-of-string

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

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

Explained:

^                                 # start-of string
  (?:                             # begin non-capturing group
    (?:\\|(?:ht|f)tps?://)\S+     # "\, http, ftp" followed by non-spaces
    |                             # or
    (?!\\|(?:ht|f)tps?://).*      # NOT "\, http, ftp" followed by anything
  )                               # end non-capturing group
$                                 # end-of-string

This is pure, unescaped regex. Add character escaping according to the rules of your environment.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文