将正则表达式转换为Dreamweaver命令

时间:2013-11-05 15:24:58

标签: regex dreamweaver

我有一个正常的表达式,可以在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 - 感谢嗅探器帮助正常表达

3 个答案:

答案 0 :(得分:2)

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

现在它运作正常。

答案 1 :(得分: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>"); 
}

答案 2 :(得分:0)

你试过吗?

dreamweaver.setUpFindReplace({
    searchString: "/([0-9][\.\s][\s\D]?[^<]*?)(\£[0-9]\.[0-9][0-9][^<])/",
    ...
});