从整个字符串JavaScript中提取两个单词之间的文本

时间:2018-03-08 12:34:29

标签: javascript regex string-matching

我有一个字符串,我想要提取两个文本之间的所有单词,例如:

var str="This is the number I want +2143334 !, again this is the next number I want +234343443 !, last number I want +76645 !, fininshed";

var ext = str.split('want').pop().split('!,').shift(); 
alert(ext);

但这仅给出了+2143334。我想要的是三个匹配,即:

+2143334, +234343443, +76645

怎么做?

5 个答案:

答案 0 :(得分:5)

您可以使用以下正则表达式来捕获<h1><time id="h">00:00:00</time></h1> <button onclick="myTimer()" id="start">&#9654;</button> <button onclick="stop()" id="stop" disabled="true">&#9632;</button> <button onclick="pause()" id="pause" disabled="true">&#9208;</button>之后跟有1位数的+

want

请参阅regex demo

在这里, /want\s*(\+\d+)/g 匹配文字子字符串,然后want匹配0 +空格字符,\s*将1个字符加号加1,然后加1个数字。

在Chrome中,您甚至可以使用(\+\d+),但并非所有浏览器都支持ECMAScript 2018酷正则表达式功能。

enter image description here

JS演示:

str.match(/(?<=want\s*)\+\d+/g)

答案 1 :(得分:1)

您可以使用RegExp (?<=want )([^ ]*)(?= !)

(?<=want )确保want[space]落后于您的表达

([^ ]*)匹配除空格外的任何内容

(?= !)确保[space]!在您的表达之后

添加g以使RegEx 全局

&#13;
&#13;
var str = "This is the number I want +2143334 !, again this is the next number I want +234343443 !, last number I want +76645 !, fininshed";

console.log(str.match(/(?<=want )([^ ]*)(?= !)/g));
&#13;
&#13;
&#13;

答案 2 :(得分:1)

实际上你的代码正在给出+76645。无论如何,更直接的方式如下:

var str="This is the number I want +2143334 !, again this is the next number I want +234343443 !, last number I want +76645 !, fininshed";

// To extract numbers only
var vetStrings = str.match(/\d+/g);
console.log(vetStrings);

// To cast the result as numbers
var vetNumbers = vetStrings.map(Number);
console.log(vetNumbers);

:)

答案 3 :(得分:1)

我的建议:

var reg = /(?<=want\s)[a-zA-Z0-9+]+(?=\s\!)/g;
var yourText = 'This is the number I want +2143334 !, again this is the next number I want +234343443 !, last number I want +76645 !, fininshed';
var resultArray = yourText.match(reg);
console.log(resultArray);

哪里

  

想\ S

(\ s代表空格)是匹配前的文字,

  

\ S \!

如果是匹配后的文字。

最好的问候;)

答案 4 :(得分:0)

你可以使用这个

  str.match(/want\s[a-zA-Z0-9+!@#$%^&*()_+={}|\\]+\s!/g).map((e)=>e.split(' ')[1])