我想操纵正则表达式返回的捕获数据

时间:2017-03-27 10:47:22

标签: html regex dreamweaver

我正在编写一个命令,它将搜索我的html文档,并根据文本节点向任何标题标记添加一个id。我想知道是否可以捕获文本节点,然后用连字符替换空格。

e.g。

<h2>This is a heading</h2>

会变成

<h2 id="this-is-a-heading">This is a heading</h2>

我是正则表达的新手,请原谅我,如果这是一个愚蠢的问题。

目前我有这个,但意识到它不会改变捕获的数据。

搜索条件:

<h2\s*>([^<]*)</h2>

替换文字:

<h2 id="$1">$1</h2>

提前致谢。

2 个答案:

答案 0 :(得分:0)

你可能没有需要正则表达式,但你可以做到。

普通JavaScript示例

window.onload = function() {
   var element = document.getElementById("somenode");
   var text = element.innerHTML;
   element.innerHTML = text.replace(" ", "-");
};
<h1 id="somenode">Hello world!</h1>

答案 1 :(得分:0)

我现在不得不分阶段做我想做的事情。

这是我到目前为止所做的。

更改

<h2>1. Something Here</h2>

<h2 id="Something-here">1. Something Here</h2>

查找除h1 ...

之外的所有标题标签
        dw.setUpFindReplace({searchString: '<h([^1])>([^<]*)', 
    replaceString: '<h$1 id="$2">$2', searchSource: true, 
matchCase: false, ignoreWhitespace: false, 
useRegularExpressions: true, searchWhat: 'document'});
                dw.replaceAll();

删除ID开头的任何数字......

        dw.setUpFindReplace({searchString: '<h([^1]) id="\s*(\d+\s+|\d+,\d+\s+|\d+\.)', 
replaceString: '<h$1 id="', searchSource: true, matchCase: false, 
ignoreWhitespace: false, useRegularExpressions: true, 
searchWhat: 'document'});
            dw.replaceAll();

连接id ...

     dw.setUpFindReplace({searchString: '<h([^1]) id="(\w+)\s+(\w+)\s*', 
replaceString: '<h$1 id="$2-$3', 
    searchSource: true, matchCase: false, 
    ignoreWhitespace: false, useRegularExpressions: true, 
    searchWhat: 'document'});
                        dw.replaceAll();