Javascript 雷格斯旺';找不到'\u2028';unicode字符

Javascript 雷格斯旺';找不到'\u2028';unicode字符,javascript,regex,firefox,unicode,Javascript,Regex,Firefox,Unicode,我们在跟踪用户提交的数据中\u2028(行分隔符)的来源时遇到很多问题,这导致Firefox中出现“unterminated string literal”错误 因此,我们考虑在将其提交到服务器(然后是数据库)之前将其过滤掉 在大量搜索和阅读他人的问题后,很明显我必须在提交到数据库之前过滤掉这些字符 在编写筛选器之前,我尝试搜索字符,以确保它可以使用以下方法找到它: var index = content.search("/\u2028/"); alert("Index: [" + index

我们在跟踪用户提交的数据中\u2028(行分隔符)的来源时遇到很多问题,这导致Firefox中出现“unterminated string literal”错误

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

在大量搜索和阅读他人的问题后,很明显我必须在提交到数据库之前过滤掉这些字符

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

var index = content.search("/\u2028/");
alert("Index: [" + index + "]");
每次我都得到-1作为结果,即使我知道字符在内容变量中(我已经通过服务器端的JavaJUnit测试确认)


假设content.replace()的工作方式与search()相同,那么为了查找和去除这些行分隔符,我是否有什么做错了或遗漏了什么?

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

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


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

您的编码是什么?在HTML中是不同的:编码并不重要,@Peter。JavaScript\u转义总是使用十六进制代码点。谢谢@Matthew。因此,基本上使用\u可以使JavaScript进行任何必要的转换。Unicode字符都是从0到0x10FFFF(理论最大值)连续编号的。代码点就是指定的编号。JS字符串文本、该页面的标题等使用。UTF-8将一个特定的字节序列映射到每个代码点,但这在这里并不相关。@Cyntech:如果您确实需要将其作为RegExp的一部分,请执行以下操作:var
index=content.search(/\u2028/)(带斜杠,但不带引号)。谢谢Matthew和TJ。这就解开了谜团。我还成功地替换了u2028字符。然而,我也读到,我可能也应该过滤掉u2029。当我使用content.replace(/\u2028\u2029/g,“”)时;,它不替换任何内容(甚至不替换u2028字符)。我是不是把多重搜索的语法搞错了?事实上,我想我刚刚解决了。。。内容。替换(/\u2028 |\u2029/g');这是否正确?@Cyntech通常对单个字符使用字符类:
/[\u2028\u2029]/g
。不要忘记,您也需要在服务器上执行此操作。
var index = content.search(/\u2028/); // regex literal