PCRE正则表达式非连续重复
PCRE Regex non-consecutive repeating
我正在尝试最少 6 个字符,总共最多 15 个字符。第一个必须是字母数字(无特殊),接下来(最多)13 个是字母数字并且可以包括不连续的(并且一次只能包含以下一个)下划线或句点或连字符,然后最后一个字符必须是字母数字。
好的示例:A_3.hj_3J
示例不正确:F__3d66.K
示例不正确:6-_sd.6h9
这就是我目前所拥有的,我觉得它很接近但令人讨厌。
我做错了什么?
^[a-zA-Z0-9]{1}([_.-]?[a-zA-Z0-9])\S{4,13}[a-zA-Z0-9]{1}$
有几个问题:
- 您的正则表达式模式还将匹配超过 15 个字符的输入。
- 由于使用
\S
,您的正则表达式还会在中间出现其他不允许的字符,例如 @
或 #
您可以通过使用否定前瞻来禁止 period/hyphen/underscore 的连续出现并从允许任何非 space 字符 [=16= 的正则表达式中间删除 \S
来修复它]
^[a-zA-Z0-9](?!.*[_.-]{2})[\w.-]{4,13}[a-zA-Z0-9]$
我正在尝试最少 6 个字符,总共最多 15 个字符。第一个必须是字母数字(无特殊),接下来(最多)13 个是字母数字并且可以包括不连续的(并且一次只能包含以下一个)下划线或句点或连字符,然后最后一个字符必须是字母数字。
好的示例:A_3.hj_3J
示例不正确:F__3d66.K
示例不正确:6-_sd.6h9
这就是我目前所拥有的,我觉得它很接近但令人讨厌。 我做错了什么?
^[a-zA-Z0-9]{1}([_.-]?[a-zA-Z0-9])\S{4,13}[a-zA-Z0-9]{1}$
有几个问题:
- 您的正则表达式模式还将匹配超过 15 个字符的输入。
- 由于使用
\S
,您的正则表达式还会在中间出现其他不允许的字符,例如
@
或 #
您可以通过使用否定前瞻来禁止 period/hyphen/underscore 的连续出现并从允许任何非 space 字符 [=16= 的正则表达式中间删除 \S
来修复它]
^[a-zA-Z0-9](?!.*[_.-]{2})[\w.-]{4,13}[a-zA-Z0-9]$