javascript - 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);
解决方案
您只需将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);
推荐阅读
- r - R缓冲/放大多边形
- string - 如何检索映射中的键,其值包含clojure中的特定子字符串?
- bash - 在 bash 中对所有最近修改的文件运行脚本
- dart - 使用 dart:io 在 dart 中发出 http 请求
- css - Webpack - 使用 mini-css-extract-plugin 设置相对路径
- java - 使用 searchview 过滤时,Recyclerview 不更新数据
- java - 运行/调试配置以红色突出显示普通应用程序的选定主类
- c# - C# 使用 Microsoft 终端服务活动客户端 (RDP) 连接到远程服务器
- typescript - 打字稿没有为“/path/to/file.ts”发出输出
- c# - 导出到 excel 返回空白表