JS Regex - 允许双连字符

时间:2015-01-12 16:34:30

标签: javascript regex

我有以下正则表达式对用户输入进行一些验证。

^\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而不是双破折号。

有人可以告诉我如何让用户输入双破折号?

由于

2 个答案:

答案 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])?)*\.?$

这与您的示例输入相匹配