gpt4 book ai didi

javascript - 如何在大量短版本中匹配长路径

转载 作者:行者123 更新时间:2023-11-29 14:47:56 28 4
gpt4 key购买 nike

解决方案是:

var str = this.path;
var spltd = str.split('/');
var agg = '(?:';
var e = 'Item';
for (i = 0; i < spltd.length-2; i++) { agg += '(?:';}
var newstr = '^(?:\/?'+agg+spltd.join('\/)?')+'::)?'+e;
var regex = new RegExp(newstr);
var check = str.match(regex);
console.log(check); // Works on the good cases, not on the bad

感谢@Rodrigo López


问题是:

我正在尝试设置一个研究功能

基本上,我有像这样的路径:

Item    
Path::Item
/Path::Item
Long/Path::Item
/Long/Path::Item
Very/Long/Path::Item
/Very/Long/Path::Item
Very/Very/Long/Path::Item
/Very/Very/Long/Path::Item
My/Very/Very/Long/Path::Item

有存储到javascript 对象中。现在,我需要 .match(),任何使用 完整路径 的论文:

My/Very/Very/Long/Path::Item

这边不是越容易...

我试过了:

//NOTE : if it's match it returns 'OK'

var str = 'My/Very/Very/Long/Path';
var spltd = str.split('/');
var newstr = '('+spltd.join('/)?(')+')$';//alert(newstr);
var regex = new RegExp(newstr);
var check = str.match(regex);
console.log(check); // 'OK'

我不能说它不起作用,但它仍然很不准确。它在太多情况下返回“OK”....

就像 str =

My/Very/Long/Path::Item
My/Long/Path::Item
Very/Path::Item
etc.

这是完全不能接受的。

最佳答案

它不漂亮,但是这个 Regex 完成了工作:

^(?:\/?(?:(?:(?:(?:My\/)?Very\/)?Very\/)?Long\/)?Path::)?Item

您可以将代码更改为:

var str = 'My/Very/Very/Long/Path::Item';
var regex = new RegExp('^(?:\\/?(?:(?:(?:(?:My\\/)?Very\\/)?Very\\/)?Long\\/)?Path::)?Item');
var check = str.match(regex);

在 Regexr.com 上测试:

enter image description here

注意:如果匹配则返回匹配,not OK,如果不匹配则返回null

关于javascript - 如何在大量短版本中匹配长路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30239224/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com