Java/Android正则表达式测试字符串中是否有链接

Java/Android正则表达式测试字符串中是否有链接,java,android,Java,Android,我有这个模式,我想测试我的字符串中是否有链接。 我想在TextView中链接这些文本 当链接包含&字符时,代码不起作用 完整代码: Pattern.compile("((http\\://|https\\://|ftp\\://|sftp\\://)|(www.))+((\\S+):(\\S+)@)?+(([a-zA-Z0-9\\.-]+\\.[a-zA-Z]{2,4})|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(/[a-zA-Z0

我有这个模式,我想测试我的字符串中是否有链接。 我想在
TextView
中链接这些文本

当链接包含
&
字符时,代码不起作用

完整代码:

Pattern.compile("((http\\://|https\\://|ftp\\://|sftp\\://)|(www.))+((\\S+):(\\S+)@)?+(([a-zA-Z0-9\\.-]+\\.[a-zA-Z]{2,4})|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(/[a-zA-Z0-9%:/-_\\?\\.'~]*)?");

我认为这比使用正则表达式更干净:

Pattern httpMatcher = Pattern.compile("((http\\://|https\\://|ftp\\://|sftp\\://)|(www.))+((\\S+):(\\S+)@)?+(([a-zA-Z0-9\\.-]+\\.[a-zA-Z]{2,4})|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(/[a-zA-Z0-9%:/-_\\?\\.'~]*)?");
String httpViewURL  = "myhttp://"; 
Linkify.addLinks(label, httpMatcher, httpViewURL);

我认为这比使用正则表达式更干净:

Pattern httpMatcher = Pattern.compile("((http\\://|https\\://|ftp\\://|sftp\\://)|(www.))+((\\S+):(\\S+)@)?+(([a-zA-Z0-9\\.-]+\\.[a-zA-Z]{2,4})|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(/[a-zA-Z0-9%:/-_\\?\\.'~]*)?");
String httpViewURL  = "myhttp://"; 
Linkify.addLinks(label, httpMatcher, httpViewURL);

您可以使用
模式。WEB\u URL

boolean isLink(String s) {
  try {
     new URL(s);
     return true;
  } catch (MalformedURLException e) {
     return false;
  }
}

请注意,
模式
类仅在API级别8后可用,但您可以在此处获取其源代码

您可以使用
模式。WEB\u URL

boolean isLink(String s) {
  try {
     new URL(s);
     return true;
  } catch (MalformedURLException e) {
     return false;
  }
}
请注意,
Patterns
类仅在API级别8之后可用,但您可以在此处获取其源代码

现在可以用了,谢谢


现在可以用了,谢谢

不行吗?什么不起作用?如果你想让我们帮你,你最好把所有细节都告诉我们。不行吗?什么不起作用?如果你想让我们帮助你,你最好告诉我们所有的细节。在这种情况下,我不得不使用模式,对不起。因为我想在文本视图中链接这些文本,所以在这种情况下我必须使用模式,对不起。因为我想在文本视图中链接这些文本