首页 新闻 搜索 专区 学院

JavaScript正则表达式验证路径

0
[已解决问题] 解决于 2011-10-24 12:30

如何在JavaScript中验证包含转义符+字母组成的特殊元字符,例如\d,我的代码如下:

        var str = "D:\download";
var reg1 = /D:\\download/;
document.write(reg1.exec(str) + "<br />");
var reg2 = new RegExp("D:\\\download");
document.write(reg2.exec(str) + "<br />");

都返回null。JavaScript针对\d这类元字符,如果需要解释为数字,只需在字面量声明写成\d或者在构造函数声明写成\\d即可,需要要解释为字符串\d,该如何些正则表达式,加四个\都没用,百思不得其解。在C#中使用一个@即可忽略所有转义...

^沙嘉^的主页 ^沙嘉^ | 菜鸟二级 | 园豆:326
提问于:2011-10-16 12:15
< >
分享
最佳答案
1
<script language="JavaScript">
<!--
var str = "D:\download";
var reg1 = /D:\\download/;

alert(str)
alert(reg1.test(str))

document.write(reg1.exec(str) + "<br />");
var reg2 = new RegExp("D:\\\download");
document.write(reg2.exec(str) + "<br />");
//-->
</script>
你的 var str = "D:\download";  等于 var str = "D:download";
因为javascript 字符串也是有转义的,你正则没错,是字符串错了,不是你想表达的字符串
hbren | 小虾三级 |园豆:684 | 2011-10-17 10:11

一语惊醒梦中人,关顾着正则表达式了

问题中的代码修改如下:

1 var str = "D:\\download";
2 var reg1 = /D:\\download/;
3 document.write(reg1.exec(str) + "<br />");
4 var reg2 = new RegExp("D:\\\\download");
5 document.write(reg2.exec(str) + "<br />");

非常感谢

^沙嘉^ | 园豆:326 (菜鸟二级) | 2011-10-17 13:44
其他回答(1)
0

由于反斜杠本身用作转义符,因此不能直接在脚本中键入一个反斜杠。如果要产生一个反斜杠,必须一起键入两个反斜杠 (\\)。所以

var str = "D:\download";

这句话就是错误的,不允许只含一个“\”的非转义字符。详情请查阅W3C的文档。

LCM | 园豆:6876 (大侠五级) | 2011-10-17 10:18

同上,非常感谢

支持(0) 反对(0) ^沙嘉^ | 园豆:326 (菜鸟二级) | 2011-10-17 13:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册