当前位置: 代码迷 >> JavaScript >> 正则表达式不会找到'\ u2028'unicode字符
  详细解决方案

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

热度:105   发布时间:2023-06-03 18:16:44.0

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

因此,我们希望在将其提交到服务器(然后是数据库)之前将其过滤掉。

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

在编写过滤器之前,我尝试搜索字符以确保它可以使用以下方法找到它:

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

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

假设content.replace()的工作方式与search()的工作方式相同,是否存在我做错的事情或者我为了查找和删除这些行分隔符而遗漏的任何内容?

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

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

要么:

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

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