我有一个正常的表达式,可以在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 - 感谢嗅探器帮助正常表达
答案 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][^<])/",
...
});