使用RegExp获取一系列单词,这些单词之前和之后可能有空格,也可能没有空格

时间:2016-05-11 08:17:52

标签: javascript regex

我尝试在冒号(:)字符后匹配一系列文本,同时忽略前后的空白字符。

例如

someWord: a series of text
-or-
someWord:        a series of text  

我希望获得一系列文本的结果,忽略冒号后的任何空格,但在文本短语中包含空格。

我为此提出的regexp尝试失败了,希望SO社区可以提供帮助!

这是我糟糕的正则表达式(我提前为你将要看到的内容道歉):

:[^ ](\w*)+?(?=\b)

3 个答案:

答案 0 :(得分:2)

> "someWord: a series of text".match(/:\s*(.*)$/)
[": a series of text", "a series of text"]

要获取文本,您可以使用引用捕获组的第一个索引,并使用string结尾处的空格:

> "someWord:        a series of text  ".match(/:\s*(.*)$/)[1].trim()
"a series of text"

答案 1 :(得分:1)

如果你只有其中一个匹配(不是字符串中的几个;请参阅我在问题上的问题),那么我认为你正在寻找

:\s*(.*?)\s*$
  • :匹配冒号
  • \s*匹配零个或多个空格字符(贪婪)
  • (...)是目标文本的捕获组
  • .*?是对任何一系列角色的非贪婪捕获
  • \s*$最后是空白的贪婪捕获

var s1 = "someWord:     a series of text    ";
var match = /:\s*(.*?)\s*$/.exec(s1);
log("Input: '" + s1 + "'");
log("Result: '" + match[1] + "'");

function log(msg) {
  var p = document.createElement('pre');
  p.appendChild(
    document.createTextNode(msg)
  );
  document.body.appendChild(p);
}

答案 2 :(得分:1)

对于这种特殊情况,您可以使用split



document.write("someWord: a series of text".split(':')[1].trim());
document.write('<br>'); // just to insert a new line for printing
document.write("someWord:        a series of text".split(':')[1].trim());
&#13;
&#13;
&#13;