正则表达式,用于将字母数字模式与量词匹配

时间:2019-05-30 22:31:29

标签: c# regex

我正试图将正则表达式中的数字限制在4到6之间,但它不起作用

最小范围有效,但最大范围无效:

  • Some Text-1 =验证
  • Some Text-201901 =验证
  • Some Text-20190101 =在失败的地方通过验证

现在,如果我在末尾添加$,则上述所有操作均无效。

任何帮助将不胜感激。

代码:

^[A-Z ]{3,}-\d{4,6}

2 个答案:

答案 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}$

Demo

测试

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}`);
    });
}

RegEx

如果不需要此表达式,可以在regex101.com中对其进行修改/更改。

RegEx电路

jex.im可视化正则表达式:

enter image description here