我正试图将正则表达式中的数字限制在4到6之间,但它不起作用
最小范围有效,但最大范围无效:
Some Text-1
=验证Some Text-201901
=验证Some Text-20190101
=在失败的地方通过验证现在,如果我在末尾添加$,则上述所有操作均无效。
任何帮助将不胜感激。
代码:
^[A-Z ]{3,}-\d{4,6}
答案 0 :(得分:1)
您要使用
^[A-Z ]{3,}-[0-9]{3,6}(?!\d)
详细信息
^
-字符串的开头[A-Z ]{3,}
-三个或更多大写字母或空格-
-连字符[0-9]{3,6}
-三到六位数字(?!\d)
-如果http://deeplizard.com/learn/video/UWlFM0R_x6I在当前位置的右边立即有一个数字,则匹配失败。答案 1 :(得分:0)
我不太确定,我们可能希望通过和失败,但是根据您的原始表达,我的猜测是,这可能是我们可能希望以i
标志开始的地方:>
^[A-Z ]{3,}-\d{1,6}$
或没有i
标志:
^[A-Za-z ]{3,}-\d{1,6}$
const regex = /^[A-Z ]{3,}-\d{1,6}$/gmi;
const str = `Some Text-1
Some Text-201901
Some Text-20190101`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
如果不需要此表达式,可以在regex101.com中对其进行修改/更改。
jex.im可视化正则表达式: