正则表达式验证以排除组

时间:2018-08-24 08:21:22

标签: regex

我有两个需要两个正则表达式的场景。

/vendors?(\-[a-z]*)*/

/vendor-staff?(\-[a-z]*)*/

我的问题是,第一个干扰第二个: 在第一个案例中,我需要捕获以下案例:供应商,供应商添加,供应商编辑,供应商列表; 第二个需要捕获以下情况:仅存在vendor-staff-add,vendor-staff-edit;

我该怎么做?我尝试了几种选择,但均未成功。

我尝试在此处验证这些内容:https://regexr.com/3uddc

谢谢

1 个答案:

答案 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字母。