0

好的,所以我有一个使用我的自定义语法的链接。这是我的解析器的一部分(没有 XSS 洗涤器部分),这是我已经隔离了其中一个剩余错误的问题。由于某种原因,URIhttp://ur.i被截断为仅"i".

任何知道为什么的人都会得到一匹小马。

var str = "[inner -> http://ur.i]";

str = str.replace(/\[([^\]]+?)\s*(\||->)\s*((?!->)[^\]])+]/g, function(m, iH, separator, hr){
  console.log('hr: '); console.log(hr);
  return '<a class="'+ (separator.match(/-&gt;/) ? 'adlns-btn' : 'adlns-link') +'" href="'+ hr +'">' +
            iH +
         '</a>';
});

console.log(str);
4

2 回答 2

1

+量词应该括号内,而不是在括号

/\[([^\]]+?)\s*(\||-&gt;)\s*((?!-&gt;)[^\]]+)]/g

这解决了问题。

于 2012-09-25T17:14:43.263 回答
0

您缺少匹配 之后的空格-&gt;,请尝试以下操作:

/\[([^\]]+?)\s*(\||-&gt;)\s*((?!-&gt;\s)[^\]])+]/g
于 2012-09-25T16:47:46.147 回答