每个x字符后的正则表达式模式

时间:2015-11-17 13:29:03

标签: regex

我需要一个正则表达式来匹配以下内容:

  

在字符串的每6个字符后面有一个';'

示例:

  • aaaaaa;z5z5z5;zdzzzt;(有效)

  • aaadzdaaa;z5z5dzdzz5;zdzdzd;(无效)

我试过了:

(([A-Za-z0-9]{6};$))

但它只根据最后的顺序验证。

2 个答案:

答案 0 :(得分:5)

你应该使用

^(?:[A-Za-z0-9]{6};)*$

请参阅regex demo

如果必须至少有一个带有分号的序列,请将*替换为+量词:

^(?:[A-Za-z0-9]{6};)+$

您实际上需要^字符串开始锚点和$字符串结束锚点,并且您不应该将$锚点放入重复的组中,因为那里只是字符串的一端。

这是正则表达式分解:

  • ^ - 字符串开头
  • (?:[A-Za-z0-9]{6};)* - 0个或更多个序列...
    • [A-Za-z0-9]{6} - 正好6个ASCII字母或数字
    • ; - 分号
  • $ - 字符串结束。

答案 1 :(得分:3)

我会用:

^(?:\w{6};)*$

使用:

^ assert position at start of a line
(?:\w{6};)* Non-capturing group

    Quantifier: * Between zero and unlimited times, as many times as possible, giving back as needed [greedy]
    \w{6} match any word character [a-zA-Z0-9_]
        Quantifier: {6} Exactly 6 times
    ; matches the character ; literally

$ assert position at end of a line
相关问题