我有一个字符串,我想要提取两个文本之间的所有单词,例如:
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
怎么做?
答案 0 :(得分:5)
您可以使用以下正则表达式来捕获<h1><time id="h">00:00:00</time></h1>
<button onclick="myTimer()" id="start">▶</button>
<button onclick="stop()" id="stop" disabled="true">■</button>
<button onclick="pause()" id="pause" disabled="true">⏸</button>
之后跟有1位数的+
:
want
请参阅regex demo。
在这里, /want\s*(\+\d+)/g
匹配文字子字符串,然后want
匹配0 +空格字符,\s*
将1个字符加号加1,然后加1个数字。
在Chrome中,您甚至可以使用(\+\d+)
,但并非所有浏览器都支持ECMAScript 2018酷正则表达式功能。
JS演示:
str.match(/(?<=want\s*)\+\d+/g)
答案 1 :(得分:1)
您可以使用RegExp (?<=want )([^ ]*)(?= !)
:
(?<=want )
确保want[space]
落后于您的表达
([^ ]*)
匹配除空格外的任何内容
(?= !)
确保[space]!
在您的表达之后
添加g
以使RegEx 全局。
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;
答案 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])