我有这个JS正则表达式:
qq8-qq-q-anything => OK
对于文件名,第一组必须是可选的:
完整的名称示例。例如:
qq-q-anything => OK
没有第一组:
.git
但如果我放了任何东西,仍然有效:
任何事情-qq-q-anything =>行
我希望第一个组是optinal,但如果文件名有第一个组,它必须与我的正则表达式字符数字匹配。
答案 0 :(得分:1)
您应该指定字符串应该以“正则表达式”开头,因此只需添加^
来指定起点。
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);
答案 1 :(得分:1)
\w
匹配数字和字母。它也包含_
个字符。您应该明确地使用字母类作为字母,并使用circumflex ^
来锚定正则表达式以断言输入字符串的开头。您不需要{1}
量词,因为前面的模式只检查一次,除非另有定义。您可能还需要i
(不区分大小写)标记:
var re = /^(?:[a-z]{2}\d-)?[a-z]{2}-[a-z]-/i;
<强> Live demo 强>