这种? var data = { temp: "C:\\DOCUME~1\\ADMINI~1\\LOCALS~1\\Temp", windir: 'C:\\WINDOWS' }; var s = '%temp%\\text.txt'; var rx = /%([^%]+)%/g; s = s.replace(rx, function ($0, $1) { return data[$1] }); alert(s); s = "%windir%\\tetxt.txt" s = s.replace(rx, function ($0, $1) { return data[$1] }); alert(s);
最后想要的结果是什么? 取得%temp%\text.txt 得到text.txt?
版主的方法当然是一种思路。但首先我在重新表达一下我的意思:我是希望用一个正则表达式去验证用户输入的带有环境变量的文件路径是否合法(true or false),这个合法指的是路径格式是否合法,而不是这个文件路径指向的文件是否存在?另外 %temp%\text.txt和%windir%\tetxt.txt只是一个特例,也可能是%xxxx%\test\xxx.xxx或者其他,但不管怎样,他们都一个共通的格式,即由一个环境变量开头,然后后面是路径的其他部分。我需要的就是一个能够描述这种格式的正则表达式。版主和各位少年,辛苦了
var rx = /^%([^%]+)%(\/[^\/]+)*.+\..+$/; alert(rx.test('%temp%\\text.txt')) alert(rx.test('%temp%\\text'))
var s = '%temp%\\text.txt';
var rx = /%([^%]+)%/g;
s = s.replace(rx, function ($0, $1) { return data[$1] });
alert(s);
s = "%windir%\\tetxt.txt"
s = s.replace(rx, function ($0, $1) { return data[$1] });
alert(s);
取得%temp%\text.txt 得到text.txt?
%temp%\text.txt和%windir%\tetxt.txt只是一个特例,也可能是%xxxx%\test\xxx.xxx或者其他,但不管怎样,他们都一个共通的格式,即由一个环境变量开头,然后后面是路径的其他部分。我需要的就是一个能够描述这种格式的正则表达式。版主和各位少年,辛苦了
var rx = /^%([^%]+)%(\/[^\/]+)*.+\..+$/;
alert(rx.test('%temp%\\text.txt'))
alert(rx.test('%temp%\\text'))