javascript - 尝试使正则表达式 JSLint 兼容

标签 javascript html xhtml jslint

我正在尝试制作这个正则表达式:

var url_pattern = /(\()((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]+)(\))|(\[)((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]+)(\])|(\{)((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]+)(\})|(<|&(?:lt|#60|#x3c);)((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]+)(>|&(?:gt|#62|#x3e);)|((?:^|[^=\s'"\]])\s*['"]?|[^=\s]\s+)(\b(?:ht|f)tps?:\/\/[a-z0-9\-._~!$'()*+,;=:\/?#[\]@%]+(?:(?!&(?:gt|#0*62|#x0*3e);|&(?:amp|apos|quot|#0*3[49]|#x0*2[27]);[.!&',:?;]?(?:[^a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]|$))&[a-z0-9\-._~!$'()*+,;=:\/?#[\]@%]*)*[a-z0-9\-_~$()*+=\/#[\]@%])/img;

符合 JSLint 标准。它提示使用 .并且不转义 [ 和 ]。

(来源:http://jmrware.com/articles/2010/linkifyurl/linkify.html)

编辑:没什么大不了的,无论如何我只是在后端完成的。我仍然想要一个版本(因为我正在构建一个渲染引擎的东西,但这不再是 super 紧急的了)。

最佳答案

这是一个带有转义的版本 [人物: var url_pattern = /(\()((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#\[\]@%]+)(\))|(\[)((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#\[\]@%]+)(\])|(\{)((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#\[\]@%]+)(\})|(<|&(?:lt|#60|#x3c);)((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#\[\]@%]+)(>|&(?:gt|#62|#x3e);)|((?:^|[^=\s'"\]])\s*['"]?|[^=\s]\s+)(\b(?:ht|f)tps?:\/\/[a-z0-9\-._~!$'()*+,;=:\/?#\[\]@%]+(?:(?!&(?:gt|#0*62|#x0*3e);|&(?:amp|apos|quot|#0*3[49]|#x0*2[27]);[.!&',:?;]?(?:[^a-z0-9\-._~!$&'()*+,;=:\/?#\[\]@%]|$))&[a-z0-9\-._~!$'()*+,;=:\/?#\[\]@%]*)*[a-z0-9\-_~$()*+=\/#\[\]@%])/img;

它仍然提示“不安全 ^ ”,这很难修复,因为它本质上意味着您应该写出您想要匹配的所有字符,而不是列出您不匹配的字符。不想匹配。这当然违背了 ^ 的目的。所以你可以忽略这个警告。

关于javascript - 尝试使正则表达式 JSLint 兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7558218/

相关文章:

Javascript 可以在 xhtml 上工作,但不能在 html 上工作

php - 我想在我的网站上添加交互式日历

javascript - d3 js 栏鼠标悬停

javascript - 某些 SiteCatalyst eVar 值未在自定义链接中传递

javascript - Highcharts - 放大时工具提示位置不正确

html - 简单的 HTML/CSS 问题 - 高度和屏幕分辨率

java - XPath:如何从一个 XHTML 节点收集多个文本片段?

javascript - Jquery通过<tr id>将<td>添加到表中

javascript - cssText webkit 错误?

javascript - 在 Angular Material 中提交选择选项值