××××××××××××××高分求一正则表达式××××××××××××

jimu8130 2007-07-10 11:31:51
表达式要求
1 针对的是文件夹的路径(包括相对和绝对路径)而不是具体某个文件!
2 路径必须是本机的路径(如果类似如下形式\\Server\s\则应属于非法路径的)
3 不包括具体文件的名称,而仅仅是文件夹(如果类似如下形式c:\sss\m.txt则应属于非法路径)
4 最好不要回答诸如“你去哪里看看啊”、“用google搜索啊”,因为我在网上搜索过了,也去过http://www.regular-expressions.info/搜索过了,可仍然没找到符合我要求的,如果您搜索到了,最好能给出具体的网页地址。
...全文
632 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
codeworker999 2007-07-10
  • 打赏
  • 举报
回复
c:\sss\m.txt
正则又不能判断这是文件夹还是文件
所以不可能有
hbhbhbhbhb1021 2007-07-10
  • 打赏
  • 举报
回复
关键是相对路径的地址
./
../这种算不算
mingxuan3000 2007-07-10
  • 打赏
  • 举报
回复
你的要求没说清楚,
你举正确舆错误几个例子
jimu8130 2007-07-10
  • 打赏
  • 举报
回复
to supNate(铅笔) :
呵呵,你说的属于特殊情况,就算是,能给出你的答案么?
supNate 2007-07-10
  • 打赏
  • 举报
回复
仅仅正则无法做到,c:\sss\m.txt完全可以是一个文件夹路径。
jimu8130 2007-07-10
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/5646/5646320.xml?temp=.830456
这里也有,如果您能答对,两个贴所有分都归答对的人
梅雪香 2007-07-10
  • 打赏
  • 举报
回复
<TEXTAREA id="ta" style="width:100%; height:100%">
d:\windows\$ntservicepackuninstall$\reg01561
books
h:
h:\
h:\setupfiles
h:\virtualdisk
h:\hdir.txt
h:\my favorites
h:\win98
h:\flash\\
:\mp3
\西楚霸王
h:\system volume information\_restore{7bda94da-b5f6-4bd0-9079-4fb1fee794e6}\rp82\
h:\system volume information\_restore{7bda94da-b5f6-4bd0-9079-4fb1fee794e6}\rp82\</TEXTAREA>
<SCRIPT LANGUAGE="JavaScript">
<!--
var ar = ta.value;
ar = ar.split("\r\n");
ta.value = "";

for(var i=0;i<ar.length;i++){
var reg = /^(([a-z]:(\\[^\\\/:\*\?"<>\|]+)*\\?)|(\\?[^\\\/:\*\?"<>\|]+(\\[^\\\/:\*\?"<>\|]+)*\\?))$/ig;
ta.value += reg.test(ar[i])+"\t"+ar[i]+"\r\n";
}
//-->
</SCRIPT>
qf521lx 2007-07-10
  • 打赏
  • 举报
回复
<html>
<head>
<title>alert</title>
<script language="javascript">
function isxml(s){
var reg = /^([a-z]:\\|\\?)?([^ \.\\\/:\*\?"<>\|]([^\\\/:\*\x?"<>\|]*[^ \.\\\/:\*\?"<>\|])?\\?)+$/i;
if(!reg.test(s))
alert('错误的路径名');
}
</script>
</head>
<body>
输入一个文件路径
<input type="text" onblur="isxml(this.value)" />
</body>
</html>


//被你搞晕了~~ 我不知道我的到底有没有问题, 我也试了/ /的情况, 没事啊
哎~匹配文件路径的正则也实在难写,看来以后正则的功底还得继续打啊~
jimu8130 2007-07-10
  • 打赏
  • 举报
回复
呵呵你不懂我的意思
\ \--我只是想说明这两个杠号之间还有空格罢了!
qf521lx 2007-07-10
  • 打赏
  • 举报
回复
( )这样的文件夹名是允许存在的,所以也就没有对它进行过滤
jimu8130 2007-07-10
  • 打赏
  • 举报
回复
to qf521lx():
需要明确的一点是开头或结尾为空格或.的文件夹是不存在的
如果你把文件夹路径直接打在windows窗口的地址栏内,开头或结尾如果有空格或.那么系统会自动清掉, 但是如果你用某个程序来打开可能会报错
------
我的程序当中,这个路径是由用户输入的(input type=text),所以用户并不知道,可能他只是误输入而已,但是程序得给出有效提示!我把你的正则去http://regexlib.com/RETester.aspx这里测试(以\(空格)\测试)并没有给出match或者nomatch的测试结果。

to hbhbhbhbhb1021(天外水火(我要多努力)):
我已经例举了主要的要求
1 针对的是文件夹的路径(包括相对和绝对路径,可能会存在文件夹的名称为s.text这样的情况,那么这种路径也属于合法;相对路径中针对的是\s\,\s这样的路径,而不是咱们程序开发经常用到的../,./这样的都属于非法!)
2 路径必须是本机的路径(如果类似如下形式\\Server\s\则应属于非法路径的)
3 文件名规则是不包含:\/:*?"<>|这些特殊字符的
至于其他的要求,比如刚刚和qf531lx讨论的\ \情况,我觉得这个是很明显的不合法的情况。在开发中,作为开发人员来说首先避免的是自己能想到的基本错误,然后在此基础满足用户或者特定环境下提出的附加要求(所以一开始我的要求并没有“文件名规则是不包含:\/:*?"<>|这些特殊字符的”)

qf521lx 2007-07-10
  • 打赏
  • 举报
回复
需要明确的一点是开头或结尾为空格或.的文件夹是不存在的
如果你把文件夹路径直接打在windows窗口的地址栏内,开头或结尾如果有空格或.那么系统会自动清掉, 但是如果你用某个程序来打开可能会报错
hbhbhbhbhb1021 2007-07-10
  • 打赏
  • 举报
回复
jimu8130兄弟,还是这样吧,如果楼上的兄弟们的正则不能满足要求的话,那整理一下都需要满足什么情况,这样列举出来效果会好些.刚才试了一下,文件夹上有些字符是不能写的,写上会报错,并且第一个字符是空格的话会被替换掉.
qf521lx 2007-07-10
  • 打赏
  • 举报
回复
不会吧 \(space)\ 在我这里没有出现异常啊
jimu8130 2007-07-10
  • 打赏
  • 举报
回复
似乎你写的正则不对样的
jimu8130 2007-07-10
  • 打赏
  • 举报
回复
\(space)\测试报异常啊
qf521lx 2007-07-10
  • 打赏
  • 举报
回复
var reg = /^([a-z]:\\|\\?)?([^ \.\\\/:\*\?"<>\|]([^\\\/:\*\x?"<>\|]*[^ \.\\\/:\*\?"<>\|])?\\?)+$/i;

jimu8130 2007-07-10
  • 打赏
  • 举报
回复
to qf521lx() :
没关系,感谢你的帮忙
qf521lx 2007-07-10
  • 打赏
  • 举报
回复
错了一个地方 等我改一下
qf521lx 2007-07-10
  • 打赏
  • 举报
回复
if(!reg.test(s))
s为你要验证的路径
加载更多回复(6)

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧