限制一个字符在整个正则表达式字符串中的出现
limiting the occurence of one character across a whole regex string
我想要一个长度在 3 到 50 个字符之间的字母数字(不是单词)字符串。它不能有超过 3 个空格。我想出的最好的是:
^[a-zA-Z0-9]{3,50}[\s]{0,3}$
但这不起作用。
有人可以给我指出正确的方向吗?
与Cary Swoveland has suggested 一样,您可以使用负先行来确保字符串的空白字符不超过 3 个。完整的模式应该是这样的:
^(?!(?:.*\h){4})[A-Za-z0-9\h]{3,50}$
Demo.
请注意,我在这里使用 \h
而不是 \s
是为了只匹配水平空白字符。
如果您需要防止空白字符出现在字符串的 beginning/end 处,您可以调整 Lookahead 并在末尾添加负 Lookbehind:
^(?!\h|(?:.*\h){4})[A-Za-z0-9\h]{3,50}(?<!\h)$
Demo.
我想要一个长度在 3 到 50 个字符之间的字母数字(不是单词)字符串。它不能有超过 3 个空格。我想出的最好的是:
^[a-zA-Z0-9]{3,50}[\s]{0,3}$
但这不起作用。
有人可以给我指出正确的方向吗?
与Cary Swoveland has suggested
^(?!(?:.*\h){4})[A-Za-z0-9\h]{3,50}$
Demo.
请注意,我在这里使用 \h
而不是 \s
是为了只匹配水平空白字符。
如果您需要防止空白字符出现在字符串的 beginning/end 处,您可以调整 Lookahead 并在末尾添加负 Lookbehind:
^(?!\h|(?:.*\h){4})[A-Za-z0-9\h]{3,50}(?<!\h)$
Demo.