正面的lookbehind匹配所有空格

时间:2014-07-13 08:11:34

标签: javascript regex

鉴于这两个字符串:

browser: {
browser:  {

如何在javascript中使用.test编写一个正面的lookbehind来返回布尔值true?我到目前为止尝试过的模式是

(?<=:[\s]+){

3 个答案:

答案 0 :(得分:4)

JavaScript中没有Lookbehind,但存在替代方案......

  • JavaScript正则表达式不支持lookbehind
  • 如果您必须具有lookbehind,则备用XRegGexp正则表达式库具有它,以及其他有用的功能
  • 不支持lookbehind的引擎的一个经典解决方法是匹配字符串(in)(pieces)(in capture groups)并仅检索您感兴趣的组。

此示例向您展示如何从捕获组中检索您想要的内容,同时忽略您不想要的内容。

var myregex = /This must be here, but don't want to match it(I want this)/i;
var matchArray = myregex.exec(yourString);
if (matchArray != null) {
    thematch = matchArray[1];
} else {
    thematch = "";
}

答案 1 :(得分:1)

以下正则表达式将捕获空格:

:([^{]*)

Javascript不支持lookbehind,因此我使用捕获组来捕获:之后的空格。

DEMO

答案 2 :(得分:1)

你不想要一个不存在的'lookbehind'。您只需要更好地构建正则表达式。

你想要匹配的完整表达是什么?

例如,如果你想要所有:{它们之间有1个以上的空格: var regex = /:\s+{/; regex.test('Browser: {'); //true regex.test('Browser: {'); //true regex.test('Browser:{'); //false

如果你只想要一个布尔值,就不需要捕获组。