JS Regex - 允许双连字符

JS Regex - allow double hyphen

我有下面的正则表达式来验证用户输入。

^\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 hyphen/dash 的名称:myInvoices-2015Jan12-04-10-11 而不是双破折号。

谁能告诉我如何让用户也输入双破折号?

谢谢

^\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} 添加到您的 - 以允许一两个破折号

您应该只需要在每个当前连字符后添加 -?,即一个可选的连字符。所以 \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])?)*\.?$

这与您的样本输入相符