Javascript 如何查找特定单词后文本的所有外观?

Javascript 如何查找特定单词后文本的所有外观?,javascript,regex,string,regex-negation,regex-group,Javascript,Regex,String,Regex Negation,Regex Group,我得到一个字符串,如: str = “Test/hello/filename/12345678/first Hddhkhd Hdhal filename/1212abcd/second” 我想得到“filename/”后面的所有字符串的数组,我知道“/”后面有一个8个字母的单词 在本例中,我希望得到一个数组,该数组将: strArr = [“12345678”, “1212abcd”] 如何解决此问题?一个正则表达式,它捕获紧跟在文本文件名之后的8个字符/: /文件名\/\/.{8}/ 有关

我得到一个字符串,如:

str = “Test/hello/filename/12345678/first
Hddhkhd
Hdhal
filename/1212abcd/second”
我想得到“filename/”后面的所有字符串的数组,我知道“/”后面有一个8个字母的单词

在本例中,我希望得到一个数组,该数组将:

strArr = [“12345678”, “1212abcd”]

如何解决此问题?

一个正则表达式,它捕获紧跟在文本文件名之后的8个字符/:

/文件名\/\/.{8}/
有关解释,请检查此项


var arr=Test/hello/filename/12345678/first Hddhkhd Hdhal filename/1212abcd/second。匹配/?首先尝试使用此正则表达式:

filename\/\w{8}
然后,通过这个正则表达式从结果中切片:

\w{8}$
首先,您将获得:

文件名/12345678

文件名/1212abcd

其次,您将获得:

12345678

1212abcd


您可以使用以下代码。它将匹配文件名/后的所有字符,直到遇到另一个/为止。在数组中获得匹配项后,您可以将其映射出来,并将所有文件名/替换为:


您还可以在组中捕获8次匹配,而不是在匹配/filename之后捕获正斜杠或换行符

如果要匹配8次或更多次,可以使用{8,},或者如果要匹配1次或更多次,可以使用+

如果不想匹配空白字符,可以将\n更改为\s

const regex=/filename\/[^\/\n]{8}/g; const str=`Test/hello/filename/12345678/first Hddhkhd Hdhal filename/1212abcd/second`; 让m; 而m=regex.execstr!==null{ 如果m.index==regex.lastIndex{ regex.lastIndex++; } console.logm[1];
}正则表达式将捕获字符串,只要它是8个字符。这就是你想要的,不是吗?@prasanth检查我的答案,我认为它对字符串更有效8@AmitDas.但他想要的正好是8个字符。@ut或者,是的,OP确实提到了8个字母的单词,但我认为这太限制了。考虑到OP的要求,你的答案绝对正确。我猜is OP只是给出了一个具体的例子,没有考虑其他的测试用例。@AmitDas。所以他可以将“8”改为他想要的任何数字。你说我知道在/“我想得到一个8个字母的单词。因此,这捕获了8个字符,而忽略了其他所有字符。如果事实是你想根据不同的规则选择文本,你必须告诉我们你想要什么规则。如果你只需要所有字符直到第一个空格,你可以执行/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);
\bfilename\/([^\/\n]{8})