[英]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.