如何创建一个可选组,但如果该组与我的正则表达式最匹配?
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
但如果我放任何东西,仍然有效:
anything-qq-q-anything => OK
我希望第一组是可选的,但如果文件名有第一组,它必须与我的正则表达式字词匹配。
你应该指定字符串应该 "start with" 你的正则表达式,所以只添加 ^
来指定起点。
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
匹配数字和字母。它也包括 _
个字符。您应该明确使用字符 class 作为字母,并使用抑扬符 ^
锚定您的正则表达式以断言输入字符串的开头。您也不需要 {1}
量词,因为除非另有定义,否则前面的模式只检查一次。您可能还需要 i
(不区分大小写)标志:
var re = /^(?:[a-z]{2}\d-)?[a-z]{2}-[a-z]-/i;
我有这个 JS 正则表达式:
var re = /(\w\w\d-{1})?\w\w-{1}\w-{1}?/;
对于文件名,第一组必须是可选的:
全名示例。示例:
qq8-qq-q-anything => OK
没有第一组:
qq-q-anything => OK
但如果我放任何东西,仍然有效:
anything-qq-q-anything => OK
我希望第一组是可选的,但如果文件名有第一组,它必须与我的正则表达式字词匹配。
你应该指定字符串应该 "start with" 你的正则表达式,所以只添加 ^
来指定起点。
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
匹配数字和字母。它也包括 _
个字符。您应该明确使用字符 class 作为字母,并使用抑扬符 ^
锚定您的正则表达式以断言输入字符串的开头。您也不需要 {1}
量词,因为除非另有定义,否则前面的模式只检查一次。您可能还需要 i
(不区分大小写)标志:
var re = /^(?:[a-z]{2}\d-)?[a-z]{2}-[a-z]-/i;