JS 正则表达式 - 允许双连字符

JS Regex - allow double hyphen

本文关键字:许双 连字符 正则表达式 JS      更新时间:2023-09-26

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

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

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

谢谢

^'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])?)*'.?$

这与您的示例输入相匹配