繁体   English   中英

如何创建一个可选的组,但是如果该组与我的正则表达式最匹配?

[英]How to make a optional group, but if the group exists most match with my regex?

我有这个JS正则表达式:

var re = /(\w\w\d-{1})?\w\w-{1}\w-{1}?/;

对于文件名,第一组必须是可选的:

完整名称示例。 例:

qq8-qq-q-anything => OK

没有第一组:

qq-q-anything => OK

但是,如果我放任何东西,仍然可以工作:

任何-qq-q-任何=>确定

我希望第一组为最佳,但是如果文件名具有第一组,则它必须与我的正则表达式单词wor digit匹配。

您应指定字符串应以正则表达式“开头”,因此仅添加^以指定起点。

 const re = /^(\\w\\w\\d-{1})?\\w\\w-{1}\\w-{1}?/; const strs = ['qq8-qq-q-anything', 'qq-q-anything', 'anything-qq-q-anything']; const result = strs.map(str => re.test(str)); console.log(result); 

\\w匹配数字和字母。 它也包含_字符。 您应该为字母明确使用字符类,并用circumflex ^锚定正则表达式以断言输入字符串的开始。 您也不需要使用{1}量词,因为除非另外定义,否则前面的模式仅被检查一次。 您可能还需要i (不区分大小写)标志:

var re = /^(?:[a-z]{2}\d-)?[a-z]{2}-[a-z]-/i;

现场演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM