1

JavaScript: The Good Parts p41包含以下正则表达式:

/&([^&;]+);/g

它用于查找所有 HTML 实体,例如>. 如果使用 JSLint 验证此代码,它会报告

不安全的'^'

虽然严格来说这是正确的,但我仍然认为可以忽略它。或不?

4

2 回答 2

3

警告正则表达式的匹配可能超出预期,警告它是正确的;它会匹配这样的东西“<code>&abc def ghi;” 尽管它们是非法的实体名称。另一方面,在这种情况下它可能不是一个严重的问题(尽管它严格取决于您匹配后的操作);你可以很容易地在 JSLint 中禁用它。

更好的 RE 将是:

/&(#[0-9]+|#[xX][a-fA-F0-9]+|[a-zA-Z0-9]+);/

我不记得实体名称中允许使用哪些其他字符,唉。

于 2013-02-08T09:47:42.930 回答
2

提供实际问题的答案。如果您知道它为什么不安全并且可以接受,请忽略它。如果您对 JSLint 的抱怨感到恼火,请修复它。;)

我认为它足够安全

于 2013-02-08T09:45:42.210 回答