正则表达式 - 查找文本中的第一个链接

时间:2013-09-14 12:05:04

标签: regex actionscript-3

我正在使用下面的正则表达式来查找文本中的第一个链接。目前,此版本号被误解为链接:

ver.1.0
xx.11
v1.2

正则表达式:

var findLink:RegExp = /([äöüÄÖÜa-zA-Z0-9\-\:\/]{2,}+\.[\*\!\'\(\)\;\:\@\&\=\$\,\?\#\%\[\]\~\-\+\_äöüÄÖÜa-zA-Z0-9\/\.]{2,}+)/g
var getLink = themessage.text.match(findLink)
trace(getLink[0])

示例文字:

  

Lorem Ipsum ver.1.0只是打印v1.2的虚拟文本xx.11   和排版行业。 example.com(example.com只能作为链接找到)

如何将条件添加到我的RegExp中,第二个点后面的字符(如果有的话)需要是a-z并且至少有2个字符?因此example.co或www.example.co可以工作,但是example.1或1.example.a不会被解释为URL。

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式:

var find:RegExp = / (https?\:\/\/[^ ]*)/g;
trace(myText.match(find));

正则表达式将查找

a whitespace
http
s but not necessarly
://
a bunch of characters that are not whitespaces

()用于界定RegExp应捕获的字符组。最后的g参数告诉RegExp不要停止看第一场比赛。

附录

如果你想匹配一个没有http的网址,这应该可以获得一个至少有一个点的单词:

/ ([a-z\:\/]+\.[a-z\.]+) /g

至少一个小写字母字符,:和/     一个点     至少有一个小写字母和。

字符

答案 1 :(得分:0)

对于仅识别字符串中的URL,这似乎对我有用。

/([fh]t{1,2}ps?:\/\/)?[\w-]+\.\w{2,4}/

它标识了HTTPS,HTTP和FTP URL,以及没有任何前缀的URL。

var string:String;
var istr:int;
istr = string.search(/([fh]t{1,2}ps?:\/\/)?[\w-]+\.\w{2,4}/);

trace(string.slice(istr).indexOf(" "));