我正在编写一个命令,它将搜索我的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>
提前致谢。
答案 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();