我正在处理必须遵循约定的8个字符的工作名称,但是如果要加上连字符,我希望允许其他字符。
我想出了这个
\w{2}YYY\w{3}(?(-).*|\b)
正确匹配的内容:
XXYYY001 >> match
XXYYY001-TEST >> match
XXYYY001123 >> no match
但是,这似乎很麻烦,所以我只想知道最有效的表达方式。
编辑:感谢Wiktor,您的回答奏效了。
更进一步:如果我想为YYY使用变量?
答案 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);
});