我有以下正则表达式对用户输入进行一些验证。
^\s{0}$|^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|\b-){0,61}[0-9A-Za-z])?(?:\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|\b-){0,61}[0-9A-Za-z])?)*\.?$
用户输入的格式为myInvoices - 2015Jan12--04-10-11
但是,上面的正则表达式只允许带有1个连字符/破折号的名称:myInvoices-2015Jan12-04-10-11而不是双破折号。
有人可以告诉我如何让用户输入双破折号?
由于
答案 0 :(得分:5)
^\s{0}$|^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|\b-{1,2}){0,61}[0-9A-Za-z])?(?:\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|\b-{1,2}){0,61}[0-9A-Za-z])?)*\.?$
我已将{1,2}
添加到您的-
以允许一两个破折号
答案 1 :(得分:4)
您应该只需在每个当前连字符后添加-?
,即可选的连字符。因此\b-
变为\b--?
:
^\s{0}$|^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|\b--?){0,61}[0-9A-Za-z])?(?:\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|\b--?){0,61}[0-9A-Za-z])?)*\.?$
这与您的示例输入相匹配