我需要在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。
答案 0 :(得分:2)
你必须以这种方式构建你的正则表达式:
/[\b\f\n\r\t\v\0]/
您的正则表达式匹配\u
,\b
,\f
,......但字面上
附加说明
\ 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)