【发布时间】:2013-03-20 23:00:26
【问题描述】:
我想做的是找到页面上的所有文件名/文件路径,并使用 javascript 将它们加粗。
一些示例文件名/路径是:
- \服务器\文件夹
- \服务器\文件夹\
- \server\folder\filename.txt
- c:\
- c:\文件夹
- c:\文件夹\
- c:\文件夹\文件名.txt
以下示例将使用正则表达式模式“test.t..”查找字符串并将其变为粗体(即,将找到 test.txt 并将其变为粗体)。我需要将该正则表达式更改为可以找到文件名/文件路径的正则表达式(只是使用了一个简单的示例,我自己对文件名/文件路径正则表达式没有任何运气)。
findAndReplace(document);
function findAndReplace(root) {
var children = root.childNodes;
var pattern = new RegExp('test.t..', 'ig');
var node;
for(var i = 0, l = children.length; i < l; i++) {
node = children[i];
if(node.nodeType === 3) { // we have a text node
if (node.nodeValue.match(pattern)){
var newValue = "<b>" + node.nodeValue.match(pattern) + "</b>";
node.parentElement.outerHTML = node.parentElement.outerHTML.replace(pattern, newValue);
}
} else if(node.nodeType === 1) { // Element node
findAndReplace(node);
}
}
}
【问题讨论】:
-
您应该查看提供给innerHTML: How To Avoid 的答案。基本策略是在元素内容上递归查找文本节点。然后将文本字符串分割成匹配和不匹配文本的文本节点。然后将匹配项包装在 B 元素中。
标签: javascript regex