javascript - 正则表达式 javascript 数字和字母

标签 javascript regex formatting

我似乎一辈子都想不出如何使用格式设置元素的正则表达式。

1d 5h 6m 12s

并且还允许它有任何变化,例如

1d 

1d 1h

1d 1h 1m 

1d 1s

6m 12s 

etc...

是否可以使用正则表达式来进行这种类型的格式化?

最佳答案

假设您需要它是有序的,

if (/^\s*(?:(?:[1-9]\d*|0)d\s+)?(?:(?:1?\d|2[0-3])h\s+)?(?:[1-5]?\dm\s+)?(?:[1-5]?\ds)?\s*$/.test(str))
{
    // success
}

这里有一个快速分割:

  1. ^$ 被称为 anchor 。它们匹配字符串的开头和结尾,因此您匹配的是整个字符串,而不仅仅是一部分,例如 hello, world! 1d 5h 6m 12s 否则将通过。

  2. \s*\s+ 匹配零个或多个以及一个或多个空白字符。

  3. (?:[1-9]\d*|0) 匹配任意数量的数字,但不匹配以零开头的数字,除非它恰好为零。

  4. (?:1?\d|2[0-3]) 匹配 0 到 23 之间的数字,包括 0 和 23。

  5. [1-5]?\d 匹配 0 到 59 之间的数字,包括 0 到 59。

  6. (?: ... ) 被称为非捕获组。它们就像括号(用于分组),除了普通的圆括号capture,我们在这里不需要它。

  7. ? 表示前面的实体是可选的。

关于javascript - 正则表达式 javascript 数字和字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14774604/

相关文章:

javascript - 通过 jQuery 回调修改作用域变量

Javascript 替换方法说明

javascript - Angularjs 测试返回静态数据的简单工厂

javascript - jPlayer "duration"在 iO 上计算为 1,440 分钟(对于所有 mp3)

javascript - float 饼图标签

javascript - 如何防止 JavaScript 中长按?

PHP preg_replace错误: Unknown modifier ']'

c# - 无法在 C# 中解析 Oracle 时间戳

python - 匹配文件中的哈希值

c# - 遍历时计算嵌套列表对象的数量