【问题标题】:Is it possible to loop over multiple lines of text with RegEx and wrap each line in some contextual HTML?是否可以使用 RegEx 循环多行文本并将每一行包装在一些上下文 HTML 中?
【发布时间】:2011-07-17 01:52:12
【问题描述】:

我已经很习惯在我的小型 javascript 应用程序/插件中使用 RegEx,但现在我希望 RegEx 可以通过执行以下操作为我节省大量时间:

我有一个长文本文件,格式如下:

Area which can contain spaces
Address which contains spaces and special characters
Phone Number
(empty line)
Area... (repeats the same structure as above)

这里是一个简短的摘录:

Ponsonby
114 Ponsonby Rd Open Til 3Am Friday & Saturday
09 3786466

Queen St
291 Queen St (Next to Bor Ders)
09 3090660

Sylvia Park
Sylvia Park Shopping Complex (286 Mt Wellington Highway)
09 5730100

我知道需要将其包装在以下内容中:

<li class="item">
    <p class="phone">09 3786466</p>
    <div class="location">
        <strong>Ponsonby</strong>
        <p class="address">114 Ponsonby Rd Open Til 3Am Friday & Saturday</p>
    </div>
</li>

我有什么方法可以运行正则表达式来查找每一行信息和循环我的内容,用这种类型的标记包装东西?

顺便说一句,我正在使用 TextMate 以防万一。

到目前为止,我的想法如下(这是行不通的):

([.\w\s]+)\n
([\w\s\b.]+)\n
([\d ]+)$\n
\n

然后在替换部分我会有我的

<li class="item">
    <p class="phone">$3</p>
    <div class="location">
        <strong>$1</strong>
        <p>$2</p>
    </div>
</li>

任何帮助将不胜感激。

感谢阅读。

詹尼斯

【问题讨论】:

    标签: html regex scripting loops textmate


    【解决方案1】:

    这个经过测试的函数应该可以解决问题:

    function process_data(text)
    { // HTML-ify some data
        var re = /(\S.*)\r?\n(\S.*)\r?\n([\d \-]+)(?=\r?\n[ ]*\r?\n|\s*$)/g;
        var rep_str = "<li class=\"item\">\n" +
            "    <p class=\"phone\">$3</p>\n" +
            "    <div class=\"location\">\n" +
            "        <strong>$1</strong>\n" +
            "        <p>$2</p>\n" +
            "    </div>\n" +
            "</li>\n";
        return text.replace(re, rep_str);
    }
    

    【讨论】:

    • 感谢您的解决方案,但是我在运行它时遇到了一些问题。我需要做什么具体的事情吗?我目前将文本传递给函数,但没有任何内容被重写......这里有一个快速示例页面:treatme.dev.supply.net.nz/text.html
    • 实际上,我刚刚开始工作,我遇到的问题是return 没有将结果打印回元素,这现在是有道理的。对 JS 稍作调整,一切都很好。非常感谢!附带一点说明:我必须创建一个最小的 HTML 结构才能将其作为 javascript 运行,有没有办法直接从 TextMate 或其他编辑器中运行它?
    • 我实际上使用了一个简单的测试 HTML 页面,它带有一个 TEXTAREA 输入(它允许我输入各种字符串)和一个运行 Javascript 测试功能的按钮,然后将结果写入页。很方便。
    猜你喜欢
    • 2011-05-08
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    相关资源
    最近更新 更多