我需要一个pregmatch来检查10个字符串,它只允许最大长度为10的数字和字母后跟一个连字符( - ),所以长度应该是最大值11。
这意味着如果用户输入10个数字或字母,则字符串的最大长度应为10,如果输入一个连字符,则字符串的长度应为11。
^(?=.{0,10}$).*
是我目前使用的模式。它只允许10个字符,但接受任何特殊字符。
答案 0 :(得分:1)
如果您想在字符串中的任何位置允许最多一个连字符但不允许11个字母数字,请尝试
^(?=[a-zA-Z0-9-]{0,11}$)(?![a-zA-Z0-9]{11})[^-]*-?[^-]*$
(?=[a-zA-Z0-9-]{0,11}$)
检查是否仅包含字母数字字符+连字符(?![a-zA-Z0-9]{11})
否定前瞻不允许11连字符[^-]*-?[^-]*$
字符串中任意位置的一个可选连字符