我正在尝试将速记符号解析为整数表示。这适用于小时,秒和分钟,但不适用于毫秒,正则表达式无法匹配。
'50ms'.match(/^(\d+)([MS|S|M|H|ms|s|m|h])$/);
我不确定如何正确地表达问题,但在此之前我确实进行了几次搜索。
答案 0 :(得分:3)
如果您需要匹配字符的序列,则需要使用alternation groups defiend (...|...)
构造。
character class仅匹配其中定义的单个字符。查看更多details on character class here。
你的正则表达式不能用毫秒工作,因为在数字之后需要1个字符后跟字符串的结尾。因此,没有2个字母的地方" ms"。
所以,正确的方法是使用
'50ms'.match(/^(\d+)(MS|S|M|H|ms|s|m|h)$/);
正如Tushar建议的那样,您可以使用/i
修饰符进一步缩小模式,并减少替代数量。
/^(\d+)(MS|ms|[SMH])$/i
请参阅this demo