正则表达式不会找到'\ u2028'unicode字符

时间:2010-06-30 05:31:09

标签: javascript regex firefox unicode

我们在跟踪用户提交的数据中的\ u2028(行分隔符)来源方面遇到了很多麻烦,导致Firefox中出现“未终止的字符串文字”错误。

因此,我们正在考虑将其过滤掉,然后再将其提交给服务器(然后再提交给数据库)。

经过广泛的谷歌搜索和阅读其他人的问题后,很明显我必须在提交到数据库之前过滤掉这些字符。

在编写过滤器之前,我尝试搜索角色以确保它可以使用以下命令找到它:

var index = content.search("/\u2028/");
alert("Index: [" + index + "]");

每次都得到-1作为结果,即使我知道该字符在内容变量中(我已通过服务器端的Java jUnit测试确认)。

假设content.replace()的工作方式与search()的工作方式相同,那么为了查找和删除这些行分隔符,有什么我做错了或者我缺少的东西吗?

1 个答案:

答案 0 :(得分:6)

您的正则表达式语法不正确。使用正则表达式文字时,只使用两个正斜杠。它应该只是:

var index = content.search("\u2028");

或:

var index = content.search(/\u2028/); // regex literal

但这应该在服务器上完成,如果有的话。可以轻易绕过JavaScript清理。它只对用户方便有用,我不认为不小心输入行分隔符是常见的。