我正在创建一个Chrome扩展程序,该扩展程序将扫描网页以查找具有特定域的电子邮件地址。在此示例中,我们将使用@ xyz.com作为域。
在我的内容脚本script.js
和硬编码的HMTL页面index.html
中,我有以下内容:
$(document).ready(function() {
$('body:contains("@xyz.com")').css("text-decoration", "underline");
});
.container {
margin: 0 auto;
display: block;
padding: 10px 10px;
text-align: center;
}
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.0.0-alpha1.js"></script>
<meta charset="utf-8">
<title>my page</title>
</head>
<body>
<div class="container">
<h1>Welcome!</h1>
<br>
<div class="text-container">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus. Lorem ipsum JohnJones.@xyz.com
, consectetur adipisicing elit. Eos, doloribus, dolorem iusto blanditiis unde eius illum consequuntur neque dicta incidunt ullam ea hic porro optio ratione repellat perspiciatis. Enim, iure! Lorem ipsum dolor sit amet, consectetur adipisicing
elit. Error, nostrum, aliquid, animi, ut quas placeat totam sunt tempora commodi nihil ullam alias modi dicta saepe minima ab quo voluptatem obcaecati? Lorem ipsum dolor sit amet, consectetur adipisicing elit. Harum, dolor quis. Sunt, ut, explicabo,
aliquam SarahBrown.@xyz.com tempore quidem voluptates cupiditate voluptas illo saepe quaerat numquam recusandae? Qui, necessitatibus, est!</p>
</div>
</div>
</body>
</html>
我正在尝试仅选择电子邮件地址,但这显然不起作用,因为它选择了所有内容。
如何选择与我的关键字(域名)匹配的文字,然后在其左侧进一步选择字符以捕获名称,直至其命中空格或电子邮件地址无法使用的非法字符?
这是有问题的,因为此扩展将在不同的页面上运行,因此无法确定嵌套的元素文本是否具有100%的成功率。
答案 0 :(得分:0)
首先,正则表达式让人感到困惑,但对于像这样的事情来说,它是最好的选择。 这是我用来检测电子邮件的正则表达式
要打破它,&#34; \ w&#34;匹配任何单词字符。 &#34; |&#34;意味着&#34;或&#34;和&#34; ._%+ - &#34;是可以在电子邮件中使用的其他字符。 &#34; *&#34;括号后表示与括号内容匹配的任意数量的字符。剩下的就是它的样子。
通过放置&#34; /&#34;来指定正则表达式代码在代码之前和之后以及&#34; g&#34;最后告诉它匹配多个值。
您可以找到有关replace命令如何工作的更多信息here。
使用以下代码查看工作示例:
var emailPattern = new RegExp(/[\w|._%+-]*@xyz.com/g);
var el = document.getElementsByTagName("p")[0];
el.innerHTML = el.innerHTML.replace(emailPattern, "<u>$&</u>");
&#13;
.container {
margin: 0 auto;
display: block;
padding: 10px 10px;
text-align: center;
}
&#13;
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.0.0-alpha1.js"></script>
<meta charset="utf-8">
<title>my page</title>
</head>
<body>
<div class="container">
<h1>Welcome!</h1>
<br>
<div class="text-container">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus. Lorem ipsum JohnJones.@xyz.com
, consectetur adipisicing elit. Eos, doloribus, dolorem iusto blanditiis unde eius illum consequuntur neque dicta incidunt ullam ea hic porro optio ratione repellat perspiciatis. Enim, iure! Lorem ipsum dolor sit amet, consectetur adipisicing
elit. Error, nostrum, aliquid, animi, ut quas placeat totam sunt tempora commodi nihil ullam alias modi dicta saepe minima ab quo voluptatem obcaecati? Lorem ipsum dolor sit amet, consectetur adipisicing elit. Harum, dolor quis. Sunt, ut, explicabo,
aliquam SarahBrown.@xyz.com tempore quidem voluptates cupiditate voluptas illo saepe quaerat numquam recusandae? Qui, necessitatibus, est!</p>
</div>
</div>
</body>
</html>
&#13;
如果您需要匹配其他域名的电子邮件,则可以使用此正则表达式: