我有以下 Javascript 代码从 RegExp 获取内部字符串:
Function.prototype.method = function (name,func){
this.prototype[name] = func;
return this;
};
RegExp.method('toRawString', function(){
return this.toString().replace(/^.(.*).$/,"$1");
});
这样做的目的是避免字符串双引号。例如,如果您有一个 Windows 文件路径“C:\My Documents\My Folder\MyFile.file”,您可以像下面这样使用它:
alert(/C:\My Documents\My Folder\MyFile.file/.toRawString());
但是它不适用于 ""C:\My Documents\My Folder\",因为它会导致语法错误。避免它的唯一方法是在字符串末尾保留双引号。因此它将被写入
alert(/C:\My Documents\My Folder\\/.toRawString());
事实上,字符串末尾的任何奇数个反斜杠都是错误的,因此所有结尾的反斜杠都必须进行双重转义。使用多行小实现并不难,但是有没有单一的 RegExp 解决方案?
笔记
当使用对象时,toRawString
通常不会用于除该方法之外的任何其他目的。我只想使用 RegExp 的语法来避免源代码中的双反斜杠。不幸的是,结尾的双斜线不能轻易避免。我认为另一种解决方法是在最后强制一个空格,但那是另一个问题。RegExp
this
更新
我终于解决了“另一个问题”并在此处发布了代码。