js中如何用正则替换单个反斜杠

var a="a\a\\a/b"
var reg=/\\/g;
alert(a.replace(reg,"-"));

我这段代码,最后输出的结果是aa-a/b

正则只把双反斜杠替换了,并没有替换单反斜杠,请问如何修改才能替换?

原因是因为\当做转义字符,在chrome的控制台可以看到"aa\a/b"最后输出的是"aaa/b"

请问如何解决这种情况呢?

阅读 16.5k
3 个回答

查了一圈资料,并没有发现解决的方法,被当成转义字符,是底层的实现,无法进行查找和替换,字符还是要写成 "a\\a\\\\a/b"才行

反斜杠“”是转义字符,出现在字符的前面,表示一个整体,比如说"n",就表示换行符。见下面代码:

var str = '\fedlab';
console.log(str.length); // 6

也就是说"f"算一个字符。

console.log(/^\fedlab/.test('\fedlab')); // true

希望可以帮到你!

你要用于哪种场景呢? 不知道这种情况是不是你要的结果:

  1. 创建test.txt,内容为a\a\\a/b

  2. 创建test.js,下面node控制台进行一些测试和结果:

  //test.js
  'use strict';
var fs=require('fs')
var a=fs.readFileSync(__dirname+'/test.txt').toString()
var b='a\\a\\\\a/b'
console.log(a.length)       //=>8 如果不是8,可能是加入了一些空格或换行符
console.log(a==b)           //=>true
console.log(a.replace(/\\/g,'-'))  //=>a-a--a/b

那么我觉得替换var a="a\a\\a/b"这种字符串的反斜杆毫无意义,你可能把字符串文本字符弄混了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题