我有一些我需要验证的表格编号。我已经尝试了多次尝试,但我还没有做好。虽然表格编号允许很多,但我需要施加一些限制:
应强制执行所有这些规则:
这是我之前所拥有的,但并未执行上述所有规则。
[A-Z0-9]([A-Za-z0-9 -.])*[A-Z0-9]
因此,这些将是新要求下的有效表格编号的示例:
123
123 456
A1 IL 23 MN
CL-100 2.0
这些将是新要求下无效表格编号的示例:
123 456
25! 25
25-IL 30-1
aa bb CC
答案 0 :(得分:0)
出于某种原因,它是否必须全部在一个正则表达式中?您可以浏览并匹配\s\s
,并确保返回false。然后你可以浏览每个角色,并确保其中不超过1个是.
,其中不超过一个是-
。您还可以检查没有前导或尾随空格,或者您可以对用户友好并简单地修改输入。然后,您可以确保至少有一个字符,如果长度恰好是一个字符,则不是短划线或句点。
最后,由于您现在已满足所有其他条件,因此您可以将字符串与[A-Z0-9 -.]*
匹配,然后您就可以得到答案。
根据你不成功的正则表达式,我怀疑你有更多你真正想要满足的条件,但希望这足以帮助你弄清楚如何自己满足它们。
答案 1 :(得分:0)
这应该有效
^([A-Z0-9]|(?! )(?!.* $)(?!.* )(?!.*-.*-)(?!.*\..*\.)(?![.-]$)[A-Z0-9 .-]+)$
有两个部分。第一个[A-Z0-9]
检查单个字符。如果它不是单个字符,则有一些排除规则(?! )(?!.* $)(?!.* )(?!.*-.*-)(?!.*\..*\.)(?![.-]$)
(按顺序):不以空格开头,没有空格结尾,没有连续的双空格,没有两个-
,没有两个{ {1}},没有单个字符.
或.
后跟字符串结尾。然后是“基础”模式(一个或多个)-
请注意,您必须使用其他[A-Z0-9 .-]+
转义\
,\
。