Javascript 使用单个正则表达式从多个列表捕获项目
我的输入如下所示: Lorem ipsum dolor sit amet,是一位杰出的献身者_4,7,13未经授权或未经授权的设施。库拉比图8马利苏达舌苔,3,6马利苏达舌苔,5马利苏达舌苔 我需要使用单个正则表达式单独捕获前面以逗号分隔的列表中的每个数字 换句话说,我需要上面的粗体数字: [4,7,13,5] 我一次又一次地试图使这项工作取得成功。我想知道在放弃和使用多个表达式之前这是否可能 我正在寻找Javascript的解决方案,但显然任何指针都会有所帮助Javascript 使用单个正则表达式从多个列表捕获项目,javascript,regex,list,replace,capture-group,Javascript,Regex,List,Replace,Capture Group,我的输入如下所示: Lorem ipsum dolor sit amet,是一位杰出的献身者_4,7,13未经授权或未经授权的设施。库拉比图8马利苏达舌苔,3,6马利苏达舌苔,5马利苏达舌苔 我需要使用单个正则表达式单独捕获前面以逗号分隔的列表中的每个数字 换句话说,我需要上面的粗体数字: [4,7,13,5] 我一次又一次地试图使这项工作取得成功。我想知道在放弃和使用多个表达式之前这是否可能 我正在寻找Javascript的解决方案,但显然任何指针都会有所帮助 (_\d+(?:,\d+)*)
(_\d+(?:,\d+)*)
试试这个。抓取捕获。然后按,
拆分。请参阅演示
您可以在Javascript中使用以下代码:
var input = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. 4,7,13 Nullam suscipit orci sit amet feugiat facilisis. Curabitur eget 8 ligula malesuada, vehicula 3,6 quam sit amet, 5 tempor velit.';
var matches = [];
input.replace(/_(\d+(?:,\d+)*)\b/g, function($0, $1) {
matches = matches.concat( $1.split(/,/g) ); return $1; } );
console.log(matches);
//=> ["4", "7", "13", "5"]
但是
5
不在逗号分隔的列表中……您能告诉我们您尝试了什么吗?JSFIDLE会更好。@EVILYZEBRA我还没有发布我尝试过的内容,因为坦率地说,除了一个基本表达式,我真的没法走得更远。这里是我最接近需求的地方(我还在第二个列表中捕捉到这6个):谢谢你的详细回答。这似乎是最有效的方法。我想确保在“手动”完成之前,仅通过正则表达式捕获数字是不可能的。我相信除了使用这样的回调函数之外,别无选择。