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