嗨,我只有一个示例字符串,该字符串想要在数据效率的前面解析所有值(例如值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