正则表达式:多行,只有特定字符的空格

时间:2014-10-04 12:01:51

标签: javascript regex

我正在使用https://www.debuggex.com/来查看和帮助开发我的RegEx字符串。 Node.js是我将执行正则表达式的目标平台。

我正在寻找某个角色的第一个实例,让我们说{(开括号)。 此字符可能以零个或多个空白字符为前缀,例如:

'  \t\t \n\n {'
'  {'
'{'

但可能没有任何非空格的前缀,所以f.ex.这些不应该匹配:

'\n\n\t  u  {'
'  r   {'
'${'

使用此正则表达式:/\s*{/gmi只是跳过非空格字符。 我试过限制这些方法:

  • /[^\S]\s*{/gmi< - '没有空白字符'..这仍然匹配
  • /(\S{,0})\s*{/gmi< - 这与任何事都不匹配?

我正在使用正则表达式对象的.lastIndex属性来获取字符串中的自定义偏移量。我正在寻找的行为将在我的特殊字符之前存在非空白字符的情况下返回null,并且在我的特殊字符之前只有零个或多个空格时将返回匹配。

2 个答案:

答案 0 :(得分:0)

可能有多种方法可以做到这一点,但这里有一个:

/^\s*$/.test(str.slice(0, bracket_pos, str.search(/\{/)))

英文:是从字符串开头到左大括号位置的子字符串,仅由零个或多个空格字符组成?

或者,你可以分开{

/^\s*$/.test(str.split('{')[0])

答案 1 :(得分:0)

Johnny Estilles写道: 我认为,你想要的是一个消极的看法。不幸的是,这些在Javascript Regex引擎中不可用。如果你好奇,你可以尝试(?

所以答案是:

currently there doesn't seem to be a way to achieve the desired behaviour using a single regex (JavaScript regex engine)

造成这种情况的主要因素似乎是:

• use of regex 'start of string' ^ does not work when .lastIndex != 0
• negative lookbehinds not supported by JavaScript