仅允许一个特殊字符的预匹配验证

Pregmatch Validation for allowing only one special character

本文关键字:验证 许一个 特殊字符      更新时间:2023-09-26

我需要一个pregmatch来检查10个字符的字符串,它只允许最大长度为10的数字和字母,后跟连字符(-),因此长度应最大为11。

这意味着如果用户输入 10 个数字或字母,则字符串的最大长度应为 10,如果输入一个连字符,则字符串的长度应为 11。

^(?=.{0,10}$).*是我目前使用的模式。它只允许 10 个字符,但接受任何特殊字符。

如果要在

字符串中的任何位置最多允许一个连字符,但不允许使用 11 个字母数字,请尝试

^(?=[a-zA-Z0-9-]{0,11}$)(?![a-zA-Z0-9]{11})[^-]*-?[^-]*$
  • (?=[a-zA-Z0-9-]{0,11}$)检查是否仅由字母数字字符+连字符组成
  • (?![a-zA-Z0-9]{11}) 负面前瞻,不允许不带连字符的 11
  • [^-]*-?[^-]*$字符串中任意位置的一个可选连字符

在正则表达式101观看演示