我需要编写一个正则表达式来查找除特定父项之外的所有文件夹路径。例如,考虑我的字符串包含以下项目之一,如果路径不是folder1和folder3的子项,我想匹配整个字符串:
string 1: "/folder1/subfolder_0"
string 2: "/folder1/"
string 3: "/folder1"
string 4: "/folder2/subfolder_0"
string 5: "/folder3/subfolder_0"
string 6: "/folder3"
我使用正则表达式/ ^\/((?!(folder1|folder3)\/)([\w\/])+)$/
来实现我的匹配。但它也匹配字符串3和6,而我只想匹配第4个字符串。我的问题是字符串以没有/字符后的folder1和folder3结束。是否可以使用正则表达式?
答案 0 :(得分:1)
您的^/((?!(folder1|folder3)/)([\w/])+)$
正则表达式与"/folder1"
和"/folder3"
匹配,因为如果folder1
或folder3
跟随/
,您只会失败字符串匹配。您需要允许字符串结尾,用/
替换前瞻中的第二个(?:/|$)
。
您可以使用
/^\/(?!folder[13](?:\/|$))[\w\/]+$/
请参阅regex demo
注意如果您需要[\w\/]+$
这些值,那么RegExp#test()
可能会多余。