用正则表达式怎么将所有有可能存在的物理路径替换成如下格式 t_1_____e1_t_est或者更具体的算法t_1__(_1_)__e1(_1_)t_est 没看明白 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 正则表达式呀把除了“\”的字符全换成“_1_”或者“(_1_)”外其他所有路径里包含有符号的都换成“_”但是还要排除像D:\web\和.asp这样的字符 额....有那么难么?我就是想先把一个物理路径里的"\"改成"(_1_)"和文件名后面如果含有"."的后缀都排除.然后再将文件夹和文件会出现的所有非英文和数字的符号,用正则全部替换成"_"有多少个字符就换成多少个"_"比如:D:\web\t-1@#\%^e1\t.est.asp先将"D:\web\"排除后开始用正则替换成t_1__(_1_)__e1(_1_)t_est <script type="text/javascript">var a='D:\\web\\t-1@#\\%^e1\\t.est.asp'alert(a.replace(/(^[^\\]*?\\[^\\]*?\\)(.*?)\.[^\.]*?$/,function (m,a,b){ return a+b.replace(/\\/g,"(_1_)").replace(/[^a-z0-9]/gi,"-")}))function abc(){alert('123')}var a="abc"eval(a)()</script> 不要D:\web\的<script type="text/javascript">var a='D:\\web\\t-1@#\\%^e1\\t.est.asp'alert(a.replace(/(^[^\\]*?\\[^\\]*?\\)(.*?)\.[^\.]*?$/,function (m,a,b){ return b.replace(/\\/g,"(_1_)").replace(/[^a-z0-9]/gi,"-")}))</script> 不对呀?结果是:t-1----1----e1--1--t-est还有读取服务器的路径一般不会连续出现两个"\"吧?所以D:\\web\\t-1@#\\%^e1\\t.est.asp应该不存在D:\web\t_1@#\%^e1\t.est.asp在排除了"D:\web\"和".asp"后要先将"\"替换成"(_1_)"然后接着把每个非英文和数字的符号都替换成"_"(是替换成下划线哦) <script type="text/javascript">var a='D:\\web\\t-1@#\\%^e1\\t.est.asp'alert(a)//这里看看 ,如果要表示成字符串 他自己回转的alert(a.replace(/(^[^\\]*?\\[^\\]*?\\)(.*?)\.[^\.]*?$/,function (m,a,b){ return b.replace(/\\/g,"(_1_)").replace(/[^a-z0-9]/gi,"_")}))//替换我看错了 我是用-来替换的,该下就好了</script> 还有a=Request.ServerVariables("PATH_TRANSLATED")读取的是服务器的物理路径,没有"\\"呀,只"\" <script type="text/javascript">var a='D:\\web\\t-1@#\\%^e1\\t.est.asp'alert(a)alert(a.replace(/(^[^\\]*?\\[^\\]*?\\)(.*?)\.[^\.]*?$/,function (m,a,b){ return b.replace(/\\/g,"(_1_)").replace(/[^a-z0-9\(\)]/gi,"_")}))</script>看见了 ,先(_1_)后,再接着把每个非英文和数字的符号都替换成"_"的时候 ,把()也替换了 js的字符串会自动把\换成\\的,因为js字符串 要表示\,必须2个\\,看看下面<script type="text/javascript">var a='D:\\web\\t-1@#\\%^e1\\t.est.asp'var cc='D:\web\t-1@#\%^e1\t.est.asp'alert(cc)alert(a)</script> 我觉的效果还是不好呢?因为如果a='D:\\web\\t-1@#\\%^e(_1_)1\\t.est(_1_).asp'就不把原来的"(_1_)"替换成"__1__"了这样会在输出的结果中看不准确原路径了举个例子:D:\\web\\t-1@#\\%^e(_1_)1\\t.est(_1_).asp本来文件t.est(_1_).asp就是在D盘的文件夹的文件夹的文件夹下,才三个文件夹结果在替换后变成"t_1__(_1_)__e(_1_)1(_1_)t_est(_1_)"以为是有5个还是6个文件夹了.所以我想是不是应该排除"D:\web\"和".asp"后第二步再替换文件夹和文件里的所有非英文和数字的符号最后再将"\\"替换成"(_1_)"会比较好点呢? <script type="text/javascript">var a='D:\\web\\t-1@#\\%^e1\\t.est.asp'var cc='D:\web\t-1@#\%^e1\t.est.asp'alert(cc)alert(a)alert(a.replace(/(^[^\\]*?\\[^\\]*?\\)(.*?)\.[^\.]*?$/,function (m,a,b){ return b.replace(/\\/g,"(_1_)").replace(/[^a-z0-9\(\)]/gi,"_")}))</script> <script type="text/javascript">var a='D:\\web\\t-1@#\\%^e(_1_)1\\t.est(_1_).asp 'alert(a)alert(a.replace(/(^[^\\]*?\\[^\\]*?\\)(.*?)\.[^\.]*?$/,function (m,a,b){ return b.replace(/[^a-z0-9\\]/gi,"_").replace(/\\/g,"(_1_)")}))</script> 非常感谢!~~~我先结帖了。但是还想提个小小的问题,要是前面的"D:\web\"是不固定的,比如"D:\www\wwwroot\"或者"D:\www\wwwroot\user1\"那么条件会怎么变呢?是不是应该要个判断语句呢?一般的服务器都是几类呵~希望解答,要是不愿意答,也是很感谢你的,嘿嘿~~~再次感谢ing... 比如"D:\www\wwwroot\" 会去掉 D:\www\"D:\www\wwwroot\user1\" 会去掉 D:\www\如果想多去掉,要看你的要求,要有规律才可以 没有呢,我的意思是可以在其他服务器上调用哈~如果其他服务器不是在“D:\web\”目录下的时候可以用个if条件语句判断下,一般都是wwwroot和web的嘛?我是用asp写的~ new ActiveXObject("Excel.Application") API 请问这个javascript效果怎么写灵活一点,可以多次使用? 求助!!iframe自定义高度问题 求助!!关于字符串 求一正则表达式 js在firefox下如何控制realplayer 100分 求高人编个 提取搜狐社区某个网页下的所有图片链接 的程序 一个简单的问题 如何在静态文件htm中包含一个动态网页jsp? 输入框默认己显示黑色字体, 怎么样设置自己输入的字体显示为蓝色 js 标尺的问题 type 应该写什么??
把除了“\”的字符全换成“_1_”或者“(_1_)”外
其他所有路径里包含有符号的都换成“_”
但是还要排除像D:\web\和.asp这样的字符
有那么难么?
我就是想先把一个物理路径里的"\"改成"(_1_)"和文件名后面如果含有"."的后缀都排除.
然后再将文件夹和文件会出现的所有非英文和数字的符号,用正则全部替换成"_"有多少个字符就换成多少个"_"比如:D:\web\t-1@#\%^e1\t.est.asp
先将"D:\web\"排除后开始用正则替换成
t_1__(_1_)__e1(_1_)t_est
<script type="text/javascript">
var a='D:\\web\\t-1@#\\%^e1\\t.est.asp'
alert(a.replace(/(^[^\\]*?\\[^\\]*?\\)(.*?)\.[^\.]*?$/,function (m,a,b){ return a+b.replace(/\\/g,"(_1_)").replace(/[^a-z0-9]/gi,"-")}))function abc(){
alert('123')
}
var a="abc"
eval(a)()</script>
var a='D:\\web\\t-1@#\\%^e1\\t.est.asp'
alert(a.replace(/(^[^\\]*?\\[^\\]*?\\)(.*?)\.[^\.]*?$/,function (m,a,b){ return b.replace(/\\/g,"(_1_)").replace(/[^a-z0-9]/gi,"-")}))</script>
结果是:t-1----1----e1--1--t-est还有读取服务器的路径一般不会连续出现两个"\"吧?
所以D:\\web\\t-1@#\\%^e1\\t.est.asp应该不存在
D:\web\t_1@#\%^e1\t.est.asp在排除了"D:\web\"和".asp"后
要先将"\"替换成"(_1_)"
然后接着把每个非英文和数字的符号都替换成"_"(是替换成下划线哦)
<script type="text/javascript">
var a='D:\\web\\t-1@#\\%^e1\\t.est.asp'
alert(a)//这里看看 ,如果要表示成字符串 他自己回转的
alert(a.replace(/(^[^\\]*?\\[^\\]*?\\)(.*?)\.[^\.]*?$/,function (m,a,b){ return b.replace(/\\/g,"(_1_)").replace(/[^a-z0-9]/gi,"_")}))//替换我看错了 我是用-来替换的,该下就好了
</script>
a=Request.ServerVariables("PATH_TRANSLATED")
读取的是服务器的物理路径,没有"\\"呀,只"\"
<script type="text/javascript">
var a='D:\\web\\t-1@#\\%^e1\\t.est.asp'
alert(a)
alert(a.replace(/(^[^\\]*?\\[^\\]*?\\)(.*?)\.[^\.]*?$/,function (m,a,b){ return b.replace(/\\/g,"(_1_)").replace(/[^a-z0-9\(\)]/gi,"_")}))
</script>
看见了 ,先(_1_)后,再接着把每个非英文和数字的符号都替换成"_"的时候 ,把()也替换了
<script type="text/javascript">
var a='D:\\web\\t-1@#\\%^e1\\t.est.asp'
var cc='D:\web\t-1@#\%^e1\t.est.asp'
alert(cc)
alert(a)</script>
因为如果a='D:\\web\\t-1@#\\%^e(_1_)1\\t.est(_1_).asp'
就不把原来的"(_1_)"替换成"__1__"了
这样会在输出的结果中看不准确原路径了
举个例子:D:\\web\\t-1@#\\%^e(_1_)1\\t.est(_1_).asp
本来文件t.est(_1_).asp就是在D盘的文件夹的文件夹的文件夹下,才三个文件夹
结果在替换后变成"t_1__(_1_)__e(_1_)1(_1_)t_est(_1_)"
以为是有5个还是6个文件夹了.所以我想是不是应该排除"D:\web\"和".asp"后
第二步再替换文件夹和文件里的所有非英文和数字的符号
最后再将"\\"替换成"(_1_)"会比较好点呢?
<script type="text/javascript">
var a='D:\\web\\t-1@#\\%^e1\\t.est.asp'
var cc='D:\web\t-1@#\%^e1\t.est.asp'
alert(cc)
alert(a)
alert(a.replace(/(^[^\\]*?\\[^\\]*?\\)(.*?)\.[^\.]*?$/,function (m,a,b){ return b.replace(/\\/g,"(_1_)").replace(/[^a-z0-9\(\)]/gi,"_")}))</script>
<script type="text/javascript">
var a='D:\\web\\t-1@#\\%^e(_1_)1\\t.est(_1_).asp 'alert(a)
alert(a.replace(/(^[^\\]*?\\[^\\]*?\\)(.*?)\.[^\.]*?$/,function (m,a,b){ return b.replace(/[^a-z0-9\\]/gi,"_").replace(/\\/g,"(_1_)")}))
</script>
我先结帖了。
但是还想提个小小的问题,
要是前面的"D:\web\"是不固定的,
比如"D:\www\wwwroot\"或者
"D:\www\wwwroot\user1\"
那么条件会怎么变呢?是不是应该要个判断语句呢?一般的服务器都是几类呵~
希望解答,要是不愿意答,也是很感谢你的,嘿嘿~~~
再次感谢ing...
如果其他服务器不是在“D:\web\”目录下的时候
可以用个if条件语句判断下,一般都是wwwroot和web的嘛?
我是用asp写的~