如何在Node.js中正确检测JSON对象中的转义字符?

时间:2017-05-19 16:18:01

标签: javascript json node.js regex

我需要在API调用中检测转义字符。 我在下面写了一个函数,它接受一个特定的值并使用正则表达式验证它是否包含转义字符。

功能:

var checkEscapeChars = function (value){
var containsEscapeChars = /\\[ubfnrtv0'"\\]/g.test(value);
return containsEscapeChars; // returns true when contains escape chars
};

我的理解是,如果值是'\ f'(换行符),那么函数应该返回true - 但它不会返回false。我相信这是因为正则表达式测试程序处理'\ f'并以不同方式解释'\ f'。

我如何检测转义字符? (我在Node 4.4.7中运行(我无法更新))。

由于

编辑: 我已经构建了一个API,并且无法接受转义字符,因为它们无法写入我的数据库。我无法对系统进行任何其他更改,并且必须正确评估字符串是否包含转义字符。

我正在输入'\ f',它转换为换行转义字符。因此该函数应返回:true(字符串包含转义字符),但它不会。它返回false。

1 个答案:

答案 0 :(得分:2)

你必须以这种方式构建你的正则表达式:

/[\b\f\n\r\t\v\0]/

Demo

您的正则表达式匹配\u\b\f,......但字面上

Demo

  

附加说明
  \ u不是逃避角色。这是一个清单:

     

\ b:退格(U + 0008 BACKSPACE)
  \ f:换页(U + 000C FORM FEED)
  \ n:换行(U + 000A LINE FEED)
  \ r:回车(U + 000D CARRIAGE RETURN)
  \ t:水平标签(U + 0009 CHARACTER TABULATION)
  \ v:垂直标签(U + 000B LINE TABULATION)
  \ 0:空字符(U + 0000 NULL)