正则表达式用于排除一些与起始字符串匹配的子文件夹

时间:2019-01-31 11:13:10

标签: javascript linux

我试图设置一个正则表达式模式,以允许父文件夹具有任何字符(不区分大小写)(包括特殊字符),并在子文件夹名称与不区分大小写的特定起始单词匹配时排除子文件夹名称。

我得到了不包含子文件夹的临时解决方案,但是在该正则表达式中,我必须对要排除的所有子文件夹进行硬编码:

[a-zA-Z0-9\-]\/(?!(st1|str2|str3))

用户可以在其中创建任何名称作为父文件夹,包括特殊字符:

its_MY-folder/foo
folder/bar

但需要限制他们时,尝试创建一个子被忽略的情况下与单词“test”文件夹中启动:

MY_Folder-name/test_name
MY_Folder/Test-name

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

否定的前瞻仅是一个占位符,因此当没有单词test时,您需要告诉正则表达式解析器要匹配的内容:

^.*\/(?!(test|Test))[^\/]+$

Here is that regex tested online

您可以看到,在负向前进((?!(test|Test))位)之后,我说我想要一个不是/且行$结尾的字符,这样我确保我在这条路的尽头。

在我的正则表达式中,我从头到尾匹配整个字符串,但是您可以在开头删除^.*

不区分大小写通常是您正在使用的库的功能,因此请查看如何执行此操作。例如,如果您使用Linux和grep,则可以进行grep -i不区分大小写。