node.js - 如何在节点 js 中创建正则表达式?
问题描述
样本数据就像
@ID_111_I1_0.000_I2_0.00_I3_-0.999*
@ID_232_TS_09.0*
我创建了一个正则表达式,例如:
const reg = new RegExp(/^@ID_[A-Z0-9._-]*\*/i);
但这对于像这样的字符串来说是有效的 @ID_111_I1_0.000_I2*
这里I2
的键在那里,但它的值没有显示以 this 开头的字符串@ID
。_
然后用键值对和字符串结尾拆分*
请帮我解决问题!!!!
解决方案
检查以下是否适合您:
^@ID_\d+(?:_[A-Z\d]+_-?\d+(?:\.\d+)?)+\*$
查看在线演示
^
- 开始字符串锚。@ID_
- 从字面上匹配提到的内容。\d+
- 1+ 数字 0-9 以获得 ID#。(?:
- 打开第一个非捕获组:_[A-Z\d]+
- 下划线后跟 1+ 个字母数字字符。_-?\d+
- 下划线、可选连字符和 1+ 位数字。(?:
- 打开第二个非捕获组:\.\d+
- 一个文字点和 1 个以上的数字。)?
- 关闭第二个非捕获组并使其成为可选。
)+
- 关闭第一个非捕获组并匹配 1 次以上。
\*
- 字面星号。$
- 结束字符串锚。
请注意,我将键值对中的小数设为可选。如果需要,您可以强制要求:
^@ID_\d+(?:_[A-Z\d]+_-?\d+\.\d+)+\*$
推荐阅读
- rest - 使用 POSTMAN 或任何其他方式批量 POST/PUT API 请求
- c# - 如何阻止 XmlSerializer 发出集合的空标记?
- tensorflow - TensorFlow 自动混合精度 fp16 比官方 resnet 上的 fp32 慢
- scope - 为什么在交互式 julia 会话中仍然失败本地/全局范围?
- excel - 如何访问工作表中的所有红色行?
- python - 在列表的循环中初始化类实例
- python - 如何使用 pycuda 进行一维 fft?
- django - 使用 CSV 上传测试 Django 表单
- authentication - 如何重定向到最后一个请求的页面,但 SavedRequestAwareAuthenticationSuccessHandler 重定向到最后一个受保护的页面?
- wpf - WPF 自定义形状交替弧段