javascript – 解析Hashtag的正则表达式(或其他建议)

我正在尝试解析一个从标签中得到的字符串,到目前为止看起来像正则表达式可能是最干净的方法.该模式有一个解释如下:

#p3                  -> p = 3
#h4                  ->         h = [ 4 ]
#h4,h6               ->         h = [ 4,6 ]
#p3,h4,h6            -> p = 3,h = [ 4,6 ]
#h4,h6,p3            -> p = 3,6 ]
#h4s2,6,10           ->         h = [ 4 ],s = { "4": [ 2,10 ] }
#h4s2,10,h6s5      ->         h = [ 4,6 ],10 ],"6": [ 5 ] }
#p20h4s2,h6s5,1 -> p = 20,"6": [ 5,1 ] }

正如我所说,我认为正则表达式可能是我最好的选择,但它也是任何复杂事物的弱点.

如果您有其他建议/解决方案,那么我欢迎他们.我可以使用if / else和很多indexOf和splits等来做到这一点……但我确信必须有一个更好的方法.

更新:左边的输出最好被认为是一种解释.虽然这是期望的最终结果,但正则表达式解决方案不必解决完整问题,但可能让我参与其中.另外,重申一下,我正在使用Javascript.

解决方法

这是一些代码来做到这一点.

var p,h = [],s = {};

var re = /[ph][0-9]+|s[0-9,]*[0-9]/g;
var a;
while ((a = re.exec(myhashtag)) !== null) {
    var first = a[0].substring(0,1);
    var rest = a[0].substring(1);
    if (first == 'p')
        p = parseInt(rest);
    else if (first == 'h')
        h.push(parseInt(rest));
    else {
        a = rest.split(',');
        for (var i = 0; i < a.length; i++)
            a[i] = parseInt(a[i]);
        s[h[h.length - 1]] = a;
    }
}

这仅使用正则表达式来查找看起来像p3或h4或s3,4,5的所有主题标签.其余的只是常规的JavaScript.

这段代码非常宽松.如果hashtag中包含无法解析的垃圾,例如#p3_banana_ * q4,则此代码会忽略它.如果hashtag包含这样的废话,那么编写更严格的代码会抛出错误可能会更好.

相关文章

kindeditor4.x代码高亮功能默认使用的是prettify插件,prett...
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代...
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小