我正在尝试使用MDN提供的文档开发Firefox附加组件。在样本HTML页面上测试时,我的正则表达式运行良好。但是,在开发附加组件时会出现问题。以下是我的代码,其名称为my-scripts.js。
$("body:first").each(function(){
// Create a REGEX Expression to detetc a phone number
var regex =/\+\d{0,3}[-.\s]?\(?\d?\)?[-.\s]?\s?\d{1,4}[-.\s]?\d{1,9}[-.\s]?\d{5}/g;
var text = $(this).html();
text = text.replace(regex, "<a href=\"javascript:;\">$&</a>");
$("body:first").html(text);
});
以下是名为main.js的主要Javascript文件。
var pageMod = require("sdk/page-mod");
var { MatchPattern } = require("sdk/util/match-pattern");
var pattern = new MatchPattern("http://example.com/*");
var self = require("sdk/self");
pageMod.PageMod({
contentScriptFile: [self.data.url("jquery-1.11.0.js"), self.data.url("my-script.js")]
});
我的正则表达式很完美,但没有检测给定网页上的数字
实施例
+111111111111
+11 (1) 111 11 11111
+11 (1) 111 11-11111
+11 111 11 11111
+11 (1) 1111 111111111
+11111111111111
+11 1111 111111111
答案 0 :(得分:1)
(较低级别)匹配模式API以构造函数中include
property的形式内置到(更高级别)PageMod API中。在PageMod文档中链接匹配模式模块的唯一原因是,您可以了解匹配字符串的工作方式。
因此,如果您希望将附加组件应用于"http://example.com/*"
,则main.js应如下所示:
var {data} = require("sdk/self");
var pageMod = require("sdk/page-mod");
pageMod.PageMod({
include: "http://example.com/*",
contentScriptFile: [data.url("jquery-1.11.0.js"), data.url("my-script.js")]
});
如果我误解了(由于其他原因,匹配模式行在那里),并且您希望将正则表达式应用于每个页面,请使用include: '*'
。