我正试着得到一封信,这是以前的数字。但regex并不像我想的那样起作用。
什么可能是错的?
regex:/(\d{1,2}G|H|D)/g
/(\d{1,2}G|H|D)/g
投入:
Zddsad 5G (25) Gtest 5D DTest 2H
预期产出:
5G 5D 2H
实际产出:
5G D D H
运行示例:regexr.com/4 4mhab
知道有什么不对劲吗?
发布于 2019-10-09 15:49:14
您应该使用字符集 ([])而不是交替 (|):
[]
|
/(\d{1,2}[GHD])/g
如果要使用替换,则需要一个组:
/(\d{1,2}(G|H|D))/g
发布于 2019-10-09 15:57:22
得到这些结果是因为你匹配1或2位数字后面跟着G,或者只匹配H或D。
您不需要一个捕获组来获得匹配,但是您可以使用字符类和单词边界\b来防止匹配成为更大单词的一部分。
\b
\b\d{1,2}[GHD]\b
Regex演示
https://stackoverflow.com/questions/58307846
相似问题