正则表达式的分割字符串在javascript

时间:2018-12-03 09:27:12

标签: javascript regex

在javascript中,我使用正则表达式对下面的字符串使用split方法,但是在javascript代码中无法正常工作,我也在RegExr等在线正则表达式测试仪网站上对其进行了测试,并且效果很好!

字符串:"$1 $2 $3 $5 $7 hello"

结果:["","$7 ","hello"]

预期结果:["hello"]

这是我的代码:online example!

function myFunction() {
    var str = "$1 $2 $3 $5 $7 hello";
    var res = str.split(/([$][0-9]+[ ]*)+/gu);
    document.getElementById("demo").innerHTML = res;
}
<p>Click the button to display the array value after the split.</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

我该如何解决?

2 个答案:

答案 0 :(得分:6)

捕获组使正则表达式引擎将捕获的值放回结果数组中。此外,还添加了一个空元素,它导致字符串的开头和旁边的匹配。

您可以使用non-capturing group并随后删除空白项目:

var str = "$1 $2 $3 $5 $7 hello";
console.log(str.split(/\s*(?:\$\d+\s*)+/).filter(Boolean));

模式详细信息

  • \s*-超过0个空格
  • (?:\$\d+\s*)+-出现1次或以上
    • \$-一个$符号
    • \d+-1个以上数字
    • \s*-超过0个空格。

请参见regex demo

答案 1 :(得分:1)

function myFunction() {
    var str = "$1 $2 $3 $5 $7 hello $5";
    var subst = ``;
    var res= str.replace(/([$][0-9]?.)/gu, subst);
    document.getElementById("demo").innerHTML = res;
}
<p>Click the button to display the array value after the split.</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>