我得到一个像这样的字符串
str = “Test/hello/filename/12345678/first
Hddhkhd
Hdhal
filename/1212abcd/second”
我想获取“ filename //”后面的所有字符串的数组,我知道在“ /”之后有一个8个字母的单词。
在这种情况下,我想获得一个数组:
strArr = [“12345678”, “1212abcd”]
如何解决此问题?
答案 0 :(得分:2)
您也可以在匹配/filename
后在匹配8次而不是正斜杠或换行符的组中捕获
\bfilename\/([^\/\n]{8})
如果您想匹配8次或更多次,可以改用{8,}
,或者如果您想匹配1次或更多次,可以使用+
。
如果您不想匹配空格字符,可以将\n
更改为\s
const regex = /filename\/([^\/\n]{8})/g;
const str = `Test/hello/filename/12345678/first
Hddhkhd
Hdhal
filename/1212abcd/second`;
let m;
while ((m = regex.exec(str)) !== null) {
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
console.log(m[1]);
}
答案 1 :(得分:1)
一个正则表达式,捕获紧接在文字“ filename //”之后的8个字符:
/filename\/\/(.{8})/
答案 2 :(得分:1)
尝试先使用此正则表达式:
filename\/\w{8}
然后在此正则表达式的结果中进行切片:
\w{8}$
首先,您将获得:
文件名/ 12345678
文件名/ 1212abcd
第二,您将得到:
12345678
1212abcd
答案 3 :(得分:0)
有关说明,请检查此REGEX
var arr = "Test/hello/filename/12345678/first Hddhkhd Hdhal filename/1212abcd/second".match(/(?<=filename\/)(.*?)(?=\/)/g);
console.log(arr)
OR
对于不受支持的Lookbehinds浏览器,请在正则表达式后使用Array#map
var arr = "Test/hello/filename/12345678/first Hddhkhd Hdhal filename/1212abcd/second".match(/filename\/(.*?)\//g).map(i=> i.split('/')[1]);
console.log(arr)
答案 4 :(得分:0)
您可以使用以下代码。它会匹配filename/
之后的所有字符,直到遇到另一个/
。在数组中找到匹配项后,可以map
进行匹配,并用replace
将filename/
的所有''
:
let a = /filename\/[^\/]+/g;
let b = 'Test/hello/filename/12345678/first Hddhkhd Hdhal filename/1212abcd/second';
let c = b.match(a).map(x=>x.replace('filename/',''));
console.log(c);