首页 > 解决方案 > javascript正则表达式仅从字符串内容中查找带有连字符的数字

问题描述

在Javascript中,从这样的字符串中,我试图只提取带有连字符的数字。即 67-64-1 和 35554-44-04。有时可能会有更多连字符。

溶剂 67-64-1 与 35554-44-04 不兼容

我尝试了不同的正则表达式,但无法正确获取。例如,此正则表达式仅获取第一个值。

var msg = 'The solvent 67-64-1 is not compatible with 35554-44-04';
//var regex = /\d+\-?/;
var regex = /(?:\d*-\d*-\d*)/;
var res = msg.match(regex);

console.log(res);

标签: javascriptregex

解决方案


您只需将g(全局)标志添加到您的正则表达式中即可在字符串中多次匹配。请注意,您应该使用\d+,而不是\d*,这样您就不会匹配“3--4”之类的内容。为了允许处理带有更多连字符的数字,我们-\d+在第一个之后使用重复组\d+

var msg = 'The solvent 67-64-1 is not compatible with 23-35554-44-04 but is compatible with 1-23';
var regex = /\d+(?:-\d+)+/g;
var res = msg.match(regex);

console.log(res);


推荐阅读