仅当第一个引用使用正则句子之前,如何在双引号之间获得字符串



嗨,我只有一个示例字符串,该字符串想要在数据效率的前面解析所有值(例如值123456和123457)。我当前的代码不会输出预期数据(123456和123457),你们能帮助我修复它。

<script>
    function getVideoIds2()
    {
    var MyData ="<div class= "col-ab-1 col-dn-2 video-see-cont">nn <i class= "watch" data-videoid= "123456" data-la-action= "click" data-la-label= "toco-video-eye" data-la-value= "123456" tabindex= "0"></i>n </div>nn </div>n </li>n ....<div class= "col-ab-1 col-dn-2 video-see-cont">nn <i class= "watch" data-videoid= "123457" data-la-action= "click" data-la-label= "toco-video-eye" data-la-value= "123457" tabindex= "0"></i>n </div>nn </div>n </li>n ";
    var regex = /data-videoid(.*?)data-la-action/g;
    var myArray;
    while ((myArray = regex.exec(MyData)) != null)  
    {  
      alert(myArray[1])
    } 
    };
    </script>

您的正则 data-videoid(.*?)data-la-action与您预期的不同。

  • d匹配数字
  • 比您匹配ata-videoid
  • 捕获零或多个字符在组(.*?)中的非贪婪
  • d匹配数字
  • 匹配data-la-action

例如:

1ata-videoid =" 1ata-la-action

1ata-videoid1ata-la-action

示例中的var MyData = JavaScript在逃脱双引号之前包含一个空间,但之后不包含一个空间。例如在class= "col-ab-1 col-dn-2 video-see-cont"

如果情况不应该在那里,这样它将像结尾一样逃脱,那么这可能是一种方法:

function getVideoIds2()
{
    var MyData ="<div class="col-ab-1 col-dn-2 video-see-cont">nn <i class="watch" data-videoid="123456" data-la-action="click" data-la-label="toco-video-eye" data-la-value="123456" tabindex="0"></i>n </div>nn </div>n </li>n ....<div class="col-ab-1 col-dn-2 video-see-cont">nn <i class="watch" data-videoid="123457" data-la-action="click" data-la-label="toco-video-eye" data-la-value="123457" tabindex="0"></i>n </div>nn </div>n </li>n ";
    var regex = /data-videoid="(d+)/g;
    var myArray;
    while (myArray = regex.exec(MyData)) {
        console.log(myArray[1]);
    }
}
getVideoIds2();

正则 data-videoid="(d+)

  • 将搜索data-videoid="
  • 然后在组(d+)中捕获一个或多个数字

尝试使用此正则以下条件:

/data-videoid=[\ ]*?"(d+)/g

相关内容

  • 没有找到相关文章

最新更新