我需要测试字符串天气与特定模式匹配。
String是完整的文件路径,例如:
C:\some\path\to\folder\folder.jpg
要么
C:\another\file\path\file.jpg
模式是:没有扩展名的文件名应该与它所在的确切父文件夹名称匹配。文件名可以是任何可能的值。
因此,在我的示例中,只有第一个字符串匹配pattern:
C:\一些\路径\到\的文件夹 \的文件夹 .JPG
可以使用一个正则表达式在javascript中进行此测试吗?
答案 0 :(得分:4)
是的,您可以使用后退参考:
\\([^\\]+)\\\1\.[^.\\]*$
第一组([^\\]+)
捕获文件夹名称,然后后引用(\1
)引用它回复说#34;同样的事情。"
所以在上面,我们有:
\\
- 匹配文字反斜杠([^\\]+)
- 文件夹名称的捕获组\\
- 另一个字面反斜杠\1
- 对捕获组的后面引用说"同样的事情在这里" \.
- 文字.
(介绍扩展名)[^.\\]*
- 零个或多个扩展字符(您可能希望将*
更改为+
以表示"一个或多个")$
- 字符串结尾如果您认为C:\some\path\to\folder\folder.test.jpg
是有效匹配(例如,您认为folder.test.jpg
上的扩展名为.test.jpg
,而不是.jpg
),请删除{{1}从最近的.
开始。
如果您想允许没有扩展名的文件,可能是[^.\\]
。 \\([^\\]+)\\\1(?:\.[^.\\]+)?$
是可选扩展名。