1

我有一个在 Dreamweaver 的查找和替换中有效的正则表达式,但是当我创建一个 Dreamweaver 命令时它不起作用。

有什么建议么?

function canAcceptCommand() {
return true;
}

function commandButtons() {
return new Array("Go!", "doIt()", "Cancel", "window.close()");
}

function doIt() {

dreamweaver.setUpFindReplace({
    searchString: "([0-9]{1}[\.\s][\s\D]?[^<]*?)(\£\d\.\d\d[^<])",
    replaceString: "<strong>$1$2</strong>",
    searchWhat: "document",
    searchSource: true,
    useRegularExpressions: true
}); 
dreamweaver.replaceAll();   

window.close();
}

谢谢

PS - 感谢嗅探器对正则表达式的帮助

4

3 回答 3

2

好的,我已经解决了这个问题。看起来它不喜欢 \d、\D 或 \s 并且正在将它们作为字母读取,所以我恢复到 [0-9] 而不是 \d 等的长手方式。

现在它工作正常。

于 2013-11-06T09:01:20.113 回答
1

您必须记住,您的 Dreamweaver 命令是用 JavaScript 编写的,它将反斜杠字符保留为字符串中的转义符。由于您的搜索字符串在技术上只是一个 JavaScript 字符串,因此您需要转义正则表达式中的反斜杠。

http://www.w3schools.com/js/js_strings.asp

所以你的搜索字符串应该像这样工作:

searchString: "([0-9]{1}[\\.\\s][\\s\\D]?[^<]*?)(\\£\\d\\.\\d\\d[^<])"

如果您计划在同一个 Dreamweaver 命令中运行多个查找和替换,您可能需要考虑创建一个可以多次调用的查找和替换函数。

例子:

function doIt() {
    function findReplace(a,b) {
        dreamweaver.setUpFindReplace({  
            searchString: a,  
            replaceString: b,  
            searchWhat: "document", // Or "allOpenDocuments" 
            searchSource: true,  
            useRegularExpressions: true
        });  
        dreamweaver.replaceAll();
    }
    // Call your find and replaces like this
    // findReplace("find string", "replace string")
    findReplace("([0-9]{1}[\\.\\s][\\s\\D]?[^<]*?)(\\£\\d\\.\\d\\d[^<])", "<strong>$1$2</strong>"); 
}
于 2015-01-27T17:10:24.183 回答
0

你试过了吗?

dreamweaver.setUpFindReplace({
    searchString: "/([0-9][\.\s][\s\D]?[^<]*?)(\£[0-9]\.[0-9][0-9][^<])/",
    ...
}); 
于 2013-11-05T16:10:05.467 回答