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})