JS Regex - 允许双连字符

use*_*790 0 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])?)*\.?$
Run Code Online (Sandbox Code Playgroud)

用户输入的格式为myInvoices - 2015Jan12--04-10-11

但是,上面的正则表达式只允许带有1个连字符/破折号的名称:myInvoices-2015Jan12-04-10-11而不是双破折号.

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

谢谢

Arū*_*kas 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])?)*\.?$
Run Code Online (Sandbox Code Playgroud)

我已添加{1,2}到您-的允许一两个破折号


Rhu*_*orl 5

您只需要-?在每个当前的连字符后面添加,即可选的连字符。所以\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])?)*\.?$
Run Code Online (Sandbox Code Playgroud)

这与您的样本输入匹配