我有两个需要两个正则表达式的场景。
/vendors?(\-[a-z]*)*/
/vendor-staff?(\-[a-z]*)*/
我的问题是,第一个干扰第二个: 在第一个案例中,我需要捕获以下案例:供应商,供应商添加,供应商编辑,供应商列表; 第二个需要捕获以下情况:仅存在vendor-staff-add,vendor-staff-edit;
我该怎么做?我尝试了几种选择,但均未成功。
我尝试在此处验证这些内容:https://regexr.com/3uddc
谢谢
答案 0 :(得分:1)
您可以在第一个正则表达式的(?!-staf)
之后添加负向前瞻vendor
:
vendor(?!-staf)s?(-[a-z]*)*
为防止连续的连字符,您需要将[a-z]*
替换为[a-z]+
模式:
vendor(?!-staf)s?(-[a-z]+)*
请参见regex demo
详细信息
vendor
-文字子字符串(?!-staf)
-在-staf
之后不允许任何vendor
子字符串s?
-可选的s
(-[a-z]+)*
-出现0次或多次-
,然后出现1个以上的小写ASCII字母。