有人可以解释这个正则表达式片段吗?
Can Someone Explain this regex snippet?
我发现这用看起来像正则表达式的代码替换了代码,但我无法破译
new Date().toISOString().
replace(/[z|t|'.]/gim," ").
replace(/'d{3}'s$/gim, " ").
replace(/:'d{2}'s+$/, " ").
trim() + "'n")
对不起,如果这很模糊。我不太确定我在看什么
代码
new Date().toISOString()
生成如下所示的内容
2015-07-01T17:21:22.123Z
正则表达式会将其放入格式
2015-07-01 17:21
所有的正则表达式都有标志g
、m
和i
。直接从正则表达式101,这意味着:
g 修饰符:全局。所有匹配项(第一场比赛时不返回(
i 修饰符:不敏感。不区分大小写的匹配(忽略 [a-zA-Z] 的大小写(
m 修饰符:多行。导致 ^ 和 $ 匹配每行的开头/结尾(不仅是字符串的开始/结尾(
第一个正则表达式
[z|t|'.]
实际上已经有一个错误了。写它的人假设|
意味着or
但方括号内的情况并非如此。可以更好地写成
[zt'.]
这将匹配 2015-07-01 T
17:21:22 .
123 Z
然后替换
replace(/[z|t|'.]/gim," ")
将用空格替换与该正则表达式匹配的每个字符。为您提供新字符串
2015-07-01 17:21:22 123
下一个正则表达式'd{3}'s$
匹配并替换 2015-07-01 17:21:22 123
,为您提供:
2015-07-01 17:21:22
最后正则表达式:'d{2}'s+$
匹配并替换 2015-07-01 17:21 :22
, 给你
2015-07-01 17:21
然后修剪掉多余的空格。
总而言之,这不是做你想做的事的好方法。你可以用子字符串或 momentjs 做得更好,正如其他人已经说过的那样。
ISO 字符串日期以如下格式打印日期:
2015-07-01T17:20:52.214Z
/[z|t|'.]/
- 似乎是[zt.]
的错误类型 - 替换所有"z","t"或"."字符。 g
是全局的,i
不区分大小写,m
是多行的(在这里没有用,因为 ISO 日期只有一行(。 这适用于所有正则表达式。
这将替换时间之前的T
,最后一个Z
与空格以及214
之前的.
。
/'d{3}'s$/
-- 3 位数字后跟一个锚定在行尾的空格。 这将替换从上一个替换中添加的214
和空间。
/:'d{2}'s+$/
-- 冒号后跟两位数字,后跟一个或多个锚定在行尾的空格。 这将替换:52
(秒部分(以及先前更换件在末尾添加的空间。
.trim
删除最终替换添加到末尾的空格。 你最终会得到:
2015-07-01 17:20
。或当前年-月-日 24 小时:分钟
这很好,但可能不需要多次替换。 如果您需要做很多日期格式化,我会推荐 momentjs 库,它使这种事情变得非常容易。 您也可以从其他日期方法(如 .getMonth
.
一个更易读的方法是:
var date = new Date().toISOString();
date = date.substr(0, 10) + ' ' + date.substr(11, 8);
原因,但可以解释替换的作用
.replace(/[z|t|'.]/gim," ") // replace with space any z,t or .
// case insenzitive multiline
.replace(/'d{3}'s$/gim, " ") // replace with space a group of
// 3digits followed by 1 space at the
// end of string
.replace(/:'d{2}'s+$/, " ") // replace the group of :, 2 digits
// and at least 1 space from the tail
// of string with space
- java.net和javascript之间正则表达式的差异
- Grunt匹配正则表达式
- 不同浏览器中的空白字符正则表达式行为
- 正则表达式在字符串中找到base64
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 调用正则表达式匹配的函数
- 使用正则表达式评估电子邮件地址时出现性能问题
- Javascript 正则表达式 : ^[^/s/]+[a-z]{1,}[0-9]*[-_]*[^/][
- JavaScript正则表达式文本与RegExp对象
- 正则表达式只允许 x 个整数
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 改进用于验证付款金额的正则表达式
- 正则表达式与数字中的第二个点匹配
- 键按正则表达式以查找具有负值的小数
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- 将po-box javascript正则表达式转换为c#regex
- Nodejs 可选正则表达式命名组的插件或代码片段
- 通过JavaScript正则表达式提取特定的文本片段
- 有人可以解释这个正则表达式片段吗?
- 查找与URL片段的第一部分匹配的正则表达式