我尝试在冒号(:)字符后匹配一系列文本,同时忽略前后的空白字符。
例如
someWord: a series of text
-or-
someWord: a series of text
我希望获得一系列文本的结果,忽略冒号后的任何空格,但在文本短语中包含空格。
我为此提出的regexp尝试失败了,希望SO社区可以提供帮助!
这是我糟糕的正则表达式(我提前为你将要看到的内容道歉):
:[^ ](\w*)+?(?=\b)
答案 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;