JavaScript:为什么正则表达式中的斜线需要写成双斜线呢?

<script type="text/javascript">
function isDigit(param) {
var reg = new RegExp("^\\d*$"); //为什么写成\d就不行却要写成\\d呢?
return reg.test(param);
}

document.write(isDigit("12345"));
document.write(isDigit("test"));
</script>

因为你那个正则表达式是字符串双引号包裹的,需要用\来转义\,才能被识别成它本身\,如果不用双反斜杠的话,会忽略掉,要么你这样写 var reg=/^\d*$/;就方便多了追问

您好,那为什么*$不需要转义呢?*$这两个也都是字符啊

追答

你不匹配$为什么要转义呢,假如你要匹配$这个符号,你就得转义\\$
你不清楚的话,你就alert("\$");alert("\\$");alert("\\")输出之间的区别就知道了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-30
因为对字符串而言,要转义,就跟java里面的正则一样,然而js本身的特性

/abcd/g; 就不需要了,在字符串中一个\被忽略,2个\才是\

本回答被网友采纳