正则表达式-带条件的附件的条件匹配

时间:2018-09-24 18:08:26

标签: javascript regex

我正在处理必须遵循约定的8个字符的工作名称,但是如果要加上连字符,我希望允许其他字符。

我想出了这个

\w{2}YYY\w{3}(?(-).*|\b)

正确匹配的内容:

XXYYY001 >> match

XXYYY001-TEST >> match

XXYYY001123  >> no match

但是,这似乎很麻烦,所以我只想知道最有效的表达方式。

编辑:感谢Wiktor,您的回答奏效了。

更进一步:如果我想为YYY使用变量?

1 个答案:

答案 0 :(得分:0)

喜欢这个。

说明:

  • ^匹配字符串的开头
  • \w{2}YYY\w{3}是您编写的部分。匹配主要模式
  • (\-.*)匹配破折号,后跟任何字符(不包括任何字符。请参见测试4)
  • ?表示上一次匹配可以出现零次或一次

const pattern =  /^\w{2}YYY\w{3}(\-.*)?$/;

const strings = [
  'XXYYY001',
  'XXYYY001XXXTEST',
  'XXYYY001-TEST',
  'XXYYY003-',
  'FARFXXYYY003',
  'FARFXXYYY003-TEST'
];

strings.forEach(string => {
  let conforms = pattern.test(string);
  console.log(string,conforms);
});