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>
最新回答
一朵野菊

2024-12-01 05:25:38

因为你那个正则表达式是字符串双引号包裹的,需要用\来转义\,才能被识别成它本身\,如果不用双反斜杠的话,会忽略掉,要么你这样写 var reg=/^\d*$/;就方便多了
追问
您好,那为什么*$不需要转义呢?*$这两个也都是字符啊
追答
你不匹配$为什么要转义呢,假如你要匹配$这个符号,你就得转义\\$
你不清楚的话,你就alert("\$");alert("\\$");alert("\\")输出之间的区别就知道了
大叔的仙女棒

2024-12-01 11:08:16

因为对字符串而言,要转义,就跟java里面的正则一样,然而js本身的特性

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