正面的lookbehind匹配所有空格

问题描述 投票:1回答:3

鉴于这两个字符串:

browser: {
browser:  {

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

(?<=:[\s]+){
javascript regex
3个回答
1
投票

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

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

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

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


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
投票

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

:([^{]*)

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

DEMO

© www.soinside.com 2019 - 2024. All rights reserved.