我需要一个正则表达式来匹配以下内容:
在字符串的每6个字符后面有一个
';'
示例:
aaaaaa;z5z5z5;zdzzzt;
(有效)
aaadzdaaa;z5z5dzdzz5;zdzdzd;
(无效)
我试过了:
(([A-Za-z0-9]{6};$))
但它只根据最后的顺序验证。
答案 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