替换以某个字母开头的任何数字

时间:2014-08-21 21:11:54

标签: javascript regex

小正则表达式有帮助吗?我无法说明为什么这不匹配。我能够找到具有类似模式的[ ]所包含的内容......

我想匹配,并且可以选择替换以s开头的所有字符串以及触及它们的所有数字,直到被0-9之外的任何内容中断。

我确实试图解决这个问题:)

以为我匹配了:

  • 以空格开头的任何内容:/\ s(逃离空间)
  • 然后以贪婪的方式抓住所有数字:\d+?
  • 全球范围内:/g

虽然缺少一些东西。小提琴和代码:

http://jsfiddle.net/SimpleAsCouldBe/eLbcbr7z/1/

stringBlob = "because sally said so s324 * s42"
// Should replace `s324` and `s42`

console.log('original: ', stringBlob);

replaced = stringBlob.replace(
    /\ s(\d+?)/g,

    // also tried:
    // /\ s\d+/g,
    // /\ s(.+?) /g,
    // /\ s(.+) /g,

    function(tokenWithDelimeter, token) {
        console.log(token);
        return "REDACTED";
    }
);

console.log('replaced: ', replaced);

1 个答案:

答案 0 :(得分:1)

而不是:/\ s(\d+?)/g您可以使用:

/\bs\d+\b/g

即。被字界包围。

Updated JsFiddle

您的正则表达式\ s\d+?将匹配一个空格,后跟字母s,然后是一个或多个数字(非贪婪)。这只会在{1}}而不是s3中生成s324