样本数据如下
@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*
这样的字符串,它会显示为true这里I2
键在那里,但它的值没有显示字符串从这个@ID
开始。然后用_
键值对分割,字符串以*
结束请帮助我解决!!!!
检查以下操作是否适用:
^@ID_d+(?:_[A-Zd]+_-?d+(?:.d+)?)+*$
查看在线演示
^
-Start string anchor.@ID_
-逐字匹配。d+
- 1+数字0-9得到ID#。(?:
-打开第一个非捕获组:_[A-Zd]+
-下划线后跟1+字母数字字符。_-?d+
-下划线、可选连字符和1+数字。(?:
-打开第二个非捕获组:.d+
-文字点和1+数字。)?
-关闭第二个非捕获组并使其成为可选的。
)+
-关闭第一个非捕获组并匹配1+次。
*
-文字星号。$
-结束字符串锚。
注意,我将键值对中的小数设置为可选的。如果需要,您可以将其设置为强制性的:
^@ID_d+(?:_[A-Zd]+_-?d+.d+)+*$