为了账号安全,请及时绑定邮箱和手机立即绑定

检测链接并在本机反应中返回另一个视图

检测链接并在本机反应中返回另一个视图

杨__羊羊 2021-12-23 15:59:39
我的代码:const orderResultJson = [  {    key: 'Скачайте приложение по ссылке',    value: 'https://google.com'  },  {    key: 'Логин',    value: 'https://instagram.com'  },  {    key: 'Пароль',    value: '849846'  },];function DetailsSection({ item }){  return(     <View>        <Text>{item.key}</Text>        <Text> {replaceURLWithHTMLLinks(item.value) ? 'Cсылка' : 'No'} </Text>    </View>  )}  function replaceURLWithHTMLLinks(text)    {        var expression =  /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi;         var regex = new RegExp(expression);         var url = text;         url.match(regex) ? true : false;} render() {    return (     ........        <FlatList          .......          renderItem={({item}) => <DetailsSection item={item} />}           keyExtractor={item => item.key}         />      .....}我在 DetailsSection 函数中有一个条件。逻辑如下:如果 {item.value} 包含链接,则显示“一些随机文本”如果不是,只显示什么是“否”目前,我还没有完全理解这个问题。一切似乎都运行良好,但 DetailsSection 内的条件流仅显示没有。但是在 JSON 中,我确实有超链接。有什么建议吗?
查看完整描述

2 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

也许您错过了 replaceURLWithHTMLLinks 函数中的“return”语句:


...

return !!url.match(regex);

...


查看完整回答
反对 回复 2021-12-23
?
温温酱

TA贡献1752条经验 获得超4个赞

我认为您使用的正则表达式不允许在 URL 开头使用 https:// 。而且您还忘记从函数中返回布尔值。尝试使用这个:


function replaceURLWithHTMLLinks(text)

    {

        var expression =  /(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})/gi; 

        var regex = new RegExp(expression); 

        var url = text; 

        return url.match(regex) ? true : false;



查看完整回答
反对 回复 2021-12-23
  • 2 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号