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 - 正規表現を手伝ってくれた sniffer に感謝

4

3 に答える 3

1

Dreamweaver コマンドは JavaScript で記述されていることを覚えておく必要があります。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 に答える