javascript - 如何处理 Rest API 响应可能是任何值,因为值可能内容纯文本、HTML、Url、Angular 2 中的超链接
问题描述
响应类型:
1. "FieldValue" : "java is platform independent language"
2. "FieldValue" : "<div>java is platform indepnedant language</div>"
3. "FieldValue" : "https://www.oracle.com/index.html"
4. "FieldValue" : "<div>https://www.oracle.com/index.html </div>"
5. "FieldValue" : "<div> java is platform independent language for more info please visit https://www.oracle.com/index.html </div>"
---角度代码---
<div *ngIf='isLink;else other_content'>
<a [innerHtml]="news.FieldValue" target="_blank ">{{news.FieldValue}}</a>
</div>
<ng-template #other_content>
<div [innerHtml]="news.FieldValue">{{news.FieldValue}}> </div>
</ng-template>
---检查URL的javascript函数---
if(new RegExp("([a-zA-Z0-9]+://)?([a-zA-Z0-9_]+:[a-zA-Z0-9_]+@)?([a-zA-Z0-9.-]+\\.[A-Za-z]{2,4})(:[0-9]+)?(/.*)?").test(news['FieldValue']))
{
this.isLink = true;
}
我想要如果 FieldValue 是链接或 URL,那么它是可点击的并在新选项卡中打开链接,如果 FieldValue 是计划文本/HTML,则显示在普通的 div 标签中。我使用 RegEx 来查找 FieldValue 是否包含 URL,但对于 4 和 5 响应类型它不起作用。
解决方案
复杂的字符串很难写正则表达式,所以先简化一下。在您的情况 4 或 5 中,您可以按以下步骤逐步进行:
- 移除 html 标签
- 修剪字符串
- 使用一个简单的正则表达式来检查它是否是一个 URL。
推荐阅读
- amazon-web-services - 带有路径参数的 GET 请求未通过 API 网关到达 ALB
- angular - 在 Angular 中创建服务时 Observable<> 出错
- angular - html2canvas 导出 a4 大小,无论窗口大小如何
- java - 通过指定java版本运行cp命令
- c# - 从 Web API 返回结果时添加两个小数点 .00
- javascript - Fullpage js - 我可以添加另一个仅在移动屏幕上可见的整页部分吗?
- triggers - 在不使用标准 clone() 方法的情况下克隆包含所有字段的机会记录?
- elasticsearch - Kibana 中的强制过滤
- python - 当我运行这个斐波那契数字程序时,我的电脑就挂了
- git - Git 修改之前的提交,该提交已经被错误的更改推送