1

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

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 添加条件,即第二个点之后的字符(如果有的话)需要是 az 并且至少有 2 个字符?因此 example.co 或 www.example.co 有效,但 example.1 或 1.example.a 不被解释为 URL。

4

2 回答 2

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 的 URL,这应该可以得到一个至少有一个点的单词:

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

至少一个小写字母、: 和 / 一个点 至少一个小写字母和 .

于 2013-09-14T12:11:59.403 回答
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(" "));
于 2014-04-21T14:51:20.110 回答