grunt如何替换HTML元素?

时间:2014-10-02 05:09:23

标签: javascript jquery regex replace gruntjs

我使用grunt将标记从灰尘模板复制到JSP。我有很多JSP页面,我想用带弹簧标记的本地化类替换跨度

    <div class="push-right">
      <a href="/credentials/login">
      <span class="localize" name="top_bar.sign_in">Sign In</span>
      </a> |
      <a href="/credentials/register">
      <span class="localize" name="top_bar.register">Register</span>
      </a>
    </div>

所以这个块应该是这样的。

    <div class="push-right">
      <a href="/credentials/login">
        <spring:message code="top_bar.sign_in" />
      </a> |
      <a href="/credentials/register">
        <spring:message code="top_bar.register" />
      </a>
    </div>

更新 @Sam提供了一个很好的RegEx示例,我现在正在关注它。我正在构建一个我推送到数组的对象

var reLocalize = new RegExp('<span(?=[^>]*?class="localize").*?name="([^"]*).*?<\/span>', 'g');
localizeReplaceObject.match = reLocalize;
localizeReplaceObject.replacement = '<spring:message code=$1 />';
localizeReplaceArray.push(localizeReplaceObject);

然后我运行grunt replace

    replace: {
      localize: {
        options: {
          patterns: localizeReplaceArray
        }
        ,files: [
        {expand: true, flatten: true, src: ['../WEB-INF/views/index.jsp'], dest: '../WEB-INF/views/'}
        ]
    }

我再次运行grunt grunt replace:localize但是index.jsp本地化标签没有更新。

Running "replace:localize" (replace) task
Verifying property replace.localize exists in config...OK
Files: ../WEB-INF/views/index.jsp -> ../WEB-INF/views/index.jsp
Options: encoding="utf8", mode=false, processContentExclude=[], patterns=[{"match":{},"replacement":"<spring:message code=$1 />"}], excludeBuiltins=false, force
filePair src ../WEB-INF/views/index.jsp
Reading ../WEB-INF/views/index.jsp...OK
Processing source...Replace ../WEB-INF/views/index.jsp → ../WEB-INF/views/index.jsp
OK
Writing ../WEB-INF/views/index.jsp...OK

Done, without errors.

1 个答案:

答案 0 :(得分:2)

使用grunt-replace(感谢@Pinal)等工具,使用以下表达式将span元素与class="localize"匹配,并捕获name属性:

<span(?=[^>]*?class="localize").*?name="([^"]*).*?<\/span>

Demo