我们在跟踪用户提交的数据中的\ u2028(行分隔符)来源方面遇到了很多麻烦,导致Firefox中出现“未终止的字符串文字”错误。
因此,我们正在考虑将其过滤掉,然后再将其提交给服务器(然后再提交给数据库)。
经过广泛的谷歌搜索和阅读其他人的问题后,很明显我必须在提交到数据库之前过滤掉这些字符。
在编写过滤器之前,我尝试搜索角色以确保它可以使用以下命令找到它:
var index = content.search("/\u2028/");
alert("Index: [" + index + "]");
每次都得到-1作为结果,即使我知道该字符在内容变量中(我已通过服务器端的Java jUnit测试确认)。
假设content.replace()的工作方式与search()的工作方式相同,那么为了查找和删除这些行分隔符,有什么我做错了或者我缺少的东西吗?
答案 0 :(得分:6)
您的正则表达式语法不正确。使用正则表达式文字时,只使用两个正斜杠。它应该只是:
var index = content.search("\u2028");
或:
var index = content.search(/\u2028/); // regex literal
但这应该在服务器上完成,如果有的话。可以轻易绕过JavaScript清理。它只对用户方便有用,我不认为不小心输入行分隔符是常见的。