我有一个Web应用程序,它从用户那里获取输入,通常是以文件路径,超链接或文件共享的形式,但并非总是如此。用户可以输入“\ my.fileshare.com”,“http://www.msdn.com”或“在我的文件中”。这些输入将导出到Excel文件。但是,如果输入的格式为“\ look on my desk”或“http://here它是”(注意空格),在导出文件并打开后,Excel会引发一条描述性错误消息我引用了“错误”。
我正在向现有代码添加一个正则表达式验证器到用户输入的文本框并编辑这些位置。因为存在大量现有条目,验证器需要尽可能具体,并且只能抛出导致Excel导出中断的输入。例如,“\ Will Work”将起作用,“Will Work”和“\ This \”也将起作用。我需要一个正则表达式,如果字符串以\,http://,https://,ftp://,ftps://开头,则服务器或文件共享名称中没有空格,如果是不要以\,http://,https://,ftp://,ftps://开头,无论如何都不错。
我已经能够写出第一部分了 ^(\\)[^ \] +(\。) $ | ^(((ht | f)tp(s)?)://)[^ /] +(/。< EM>) $
但我无法弄清楚如果不以\,http://,https://,ftp://,ftps://开头,如何忽略所有内容。
答案 0 :(得分:1)
^(?:(?:\\|(?: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
这是纯粹的,未转义的正则表达式。根据您的环境规则添加字符转义。
答案 1 :(得分:0)
编辑:哎呀过早。
此表达式仍然不允许“http://www.google.com/hello world”:/
编辑第三次
我们走了!
^(?:(?:\\ |(?:ht | f)tps?://)[^ / \] +([/ \]。)?|(?!\\ | TPS |:(HT fΔ)的://))$