我有一堆函数正在将页面过滤到附加到电子邮件地址的域。除了一件小事之外,所有工作都很棒,有些链接是这样的:
EXAMPLE.COM
EXAMPLE.ORG。
EXAMPLE.ORG取代。
EXAMPLE.COM"
EXAMPLE.COM&#34 ;.
EXAMPLE.COM)。
EXAMPLE.COM(COMMENT)"
DEPT.EXAMPLE.COM
EXAMPLE.ORG
EXAMPLE.COM。
我想弄清楚最后一个过滤器(正则表达式与否)将删除TLD之后的所有内容。所有这些项目都在一个数组中。
修改
我使用的功能:
function filterByDomain(array) {
var regex = new RegExp("([^.\n]+\.[a-z]{2,6}\b)", 'gi');
return array.filter(function(text){
return regex.test(text);
});
}
答案 0 :(得分:2)
您可以使用此正则表达式来匹配每种情况的TLD:
import scala.concurrent.Await
import scala.concurrent.duration._
Await.result(
SlickDB().run(DBIO.seq(schema.create))
, 10 seconds)
您的验证功能可以是:
/^[^.\n]+\.[a-z]{2,63}$/gim
PS:请阅读此Q & A to see that up to 63 characters are allowed in TLD.
答案 1 :(得分:0)
我匹配所有前导[\w.]
并省略最后一个点,如果有的话:
var result = url.match(/^[\w\.]+/).join("");
if(result.slice(-1)==".") result = result.slice(0,-1);
请注意,\w
应替换为更复杂的内容:
_
是\w
集的一部分,但不应位于网址-
不属于\w
,但可以在与.
或-
为了保持正则表达式简单且代码可读,我就是这样做的
_
#
#
和_
只能在TLD之后-
替换为_
(_
属于\w
)_
替换为-
www.-example-.com
之类的网址仍会通过,可以通过搜索[.-]{2,}