【发布时间】:2022-01-13 17:48:25
【问题描述】:
在构建应该遵循的 RegEx 时请求您的帮助
- 应以字母数字字符开头和结尾
- 至少应为 1 个字符
- 不应以给定的特殊字符 (-_',.) 开始/结束
- 单词之间应包含 (-_',.)
我一直在使用下面的正则表达式
^[a-zA-Z0-9][a-zA-Z0-9.,'\-_ ]*[a-zA-Z0-9]$
它似乎工作正常,除了它至少需要 2 个字符,但我的要求是名称也可以是 1 个字符,在这种情况下,它不应该是任何给定的特殊字符 (-_',.)
对此的任何帮助将不胜感激,在此先感谢。
【问题讨论】:
-
使用否定前瞻断言:
^[a-zA-Z0-9](?!.*[-_',.]$)[\w.,' -]*$ -
从逻辑上讲,满足规则 1 和 4 的最小可能长度是 3 个字符,因为规则 4 中的特殊字符不是字母数字。没有办法让一个字符串以字母数字字符开头和结尾,但中间还包含一个特殊的(非字母数字)。世界应该
shall而不是may?