Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有多个返回对象的复杂正则表达式可选搜索_Javascript_Regex_Regex Lookarounds_Regexp Replace - Fatal编程技术网

Javascript 具有多个返回对象的复杂正则表达式可选搜索

Javascript 具有多个返回对象的复杂正则表达式可选搜索,javascript,regex,regex-lookarounds,regexp-replace,Javascript,Regex,Regex Lookarounds,Regexp Replace,我正试图让下面的内容在特定条件下进行搜索。 将始终存在给定的文件名,其他文件名是可选的 [[文件:HumanMaleDiagram.png | right | 300px | thumb |一个男性的图表。] 第二项可以是[左、右、中]或可选,大小可选(px或%),拇指可选,结尾的alt文本可选 我用过: var-imageFinder=/\\\\\s*\[\[文件]:([\w\-\\\\\.]+)\\\\*(?=[右|左|中]*)\\\\*(?=[\w]*px)\\*(?=[拇指]*)\\\.

我正试图让下面的内容在特定条件下进行搜索。 将始终存在给定的文件名,其他文件名是可选的

[[文件:HumanMaleDiagram.png | right | 300px | thumb |一个男性的图表。]

第二项可以是[左、右、中]或可选,大小可选(px或%),拇指可选,结尾的alt文本可选

我用过:

var-imageFinder=/\\\\\s*\[\[文件]:([\w\-\\\\\.]+)\\\\*(?=[右|左|中]*)\\\\*(?=[\w]*px)\\*(?=[拇指]*)\\\.*(?=[\w\.\s]*)\]\]\]\]/gi

要返回$1…$5

所以我在管道上使用了前瞻的“?=”和“*”,但没有找到它

仅仅在过去几天里,我一直在愤怒地使用正则表达式。我所有的其他人都在工作(他们比这个小),但是我会感激地得到一些帮助

在JavaScript中执行此操作


感谢所有能够提供帮助的人。

这里是一个快速片段,使用该片段,对结果进行分解,并返回一个值为
未定义的对象,以用于任何缺少的捕获组

我不确定管道是否是永久性的,即使管道之间没有绳子

const regex=/(?:File:([\w\s-]+\.\w{3,4}))\\\\\;(右|左|中心)\\\\;(\d+(?:px |%))?\\\\\\\\\(拇指)\\\\\\.[^]]?/i
常量解析=(str)=>{
const[_,file,align,width,thumb,desc]=regex.exec(str);
返回{file,align,width,thumb,desc};
}
常数
str1='[[文件:humanmaledigram.png | right | 300px | thumb |一个男性的图表]],
str2='[[File:Human|u 23.mp4 | left | 300%| |一个男性的图表]],
str3='[[文件:HumanMDiagram.jpeg | | | 300%| |一张男性人体图]];
log(解析(str1));
日志(解析(str2));
log(解析(str3))

.as-console-wrapper{max-height:100%!important;top:0;}
这是一个快速的代码片段,使用它,对结果进行分解,并返回一个值为
未定义的对象,用于任何缺少的捕获组

我不确定管道是否是永久性的,即使管道之间没有绳子

const regex=/(?:File:([\w\s-]+\.\w{3,4}))\\\\\;(右|左|中心)\\\\;(\d+(?:px |%))?\\\\\\\\\(拇指)\\\\\\.[^]]?/i
常量解析=(str)=>{
const[_,file,align,width,thumb,desc]=regex.exec(str);
返回{file,align,width,thumb,desc};
}
常数
str1='[[文件:humanmaledigram.png | right | 300px | thumb |一个男性的图表]],
str2='[[File:Human|u 23.mp4 | left | 300%| |一个男性的图表]],
str3='[[文件:HumanMDiagram.jpeg | | | 300%| |一张男性人体图]];
log(解析(str1));
日志(解析(str2));
log(解析(str3))

.as console wrapper{max height:100%!important;top:0;}
您可以使每个部分都是可选的,因此不需要使用lookahead

我建议使用(但不是必需的)


\[\[文件:[^ |]+(?:\\|)(?您可以使每个部分都是可选的,因此不需要使用前瞻

我建议使用(但不是必需的)

\[\[文件:[^ |]+(?:\ |)(?)?
\[\[File:[^|]+(?:\|(?<align>left|right|center))?(?:\|(?<size>\d+(?:px|%)))?(?:\|(?<thumb>thumb))?(?:\|(?<alt>[^|]+))?\]\]