我必须检查字符串客户端。如果它只包含“\”(1,2或1000次),我需要拒绝它。代码(你的一些建议不幸地不起作用):
value.replace(/\\/g, '');
if(value=="") alert("NO"); else alert("YES");
所以:
value="\" = NO
value="\hello \people" = YES
value="\\\\hello \\people" = YES
value="hello \\people" = YES
value="hello people\" = YES
value="\\" = NO
value="\\\\\\" = NO
value="\\ \\\\ \ \\\" = NO
答案 0 :(得分:3)
如果字符串有实际的单个反斜杠(例如,除了示例中的转义字符\a
和\F
之外没有反斜杠),那么你将要去有一段艰难的时期,但如果他们被妥善逃脱,你可以简单地做:
str = str.replace( /\\/g, '' )
删除它们。
答案 1 :(得分:2)
正如Yi Jiang所说,唯一的可靠方法是使用服务器端代码。当然,现在你可以使用JavaScript服务器端(我经常这样做)。
答案是:
updatedString = originalString.replace(/\\/g, '');
...这是一个全局替换所有反斜杠的RegExp。
有些实现需要您这样做:
var re = /\\/g;
re.lastIndex = 0;
updatedString = originalString.replace(re, '');
...或者第二次替换可能无法正常工作。 (是的,真的,是的,我知道这似乎是错的。)实际上,不,对不起 - 如果你不一直循环到结束,你只需要重置字符串(即使看起来RegEx应该超出范围,这是奇怪的一点)。由于replace
到达字符串的末尾,你没问题。
答案 2 :(得分:0)
在Javascript中:
myvar=myvar.replace(/\\/g,'');
在PHP中:
$myvar=str_replace('\\','',$myvar);
请注意,它们都应该被赋予双反斜杠,因为它是一个转义字符。
在Javascript中这样做很好,但是如果你想确定的话,你也必须在服务器端做这件事,因为浏览器用户如果想要绕过你的验证就可以禁用javascript。 (你没有在这里指定一个服务器端语言,但我之前就已经考虑过PHP了。)
您没有说明您不希望它到达您的数据库的原因?如果你试图阻止黑客入侵,你需要做的不仅仅是因为它不仅仅是可以造成伤害的反斜杠。