【问题标题】:Split if one or more spaces are found如果找到一个或多个空格,则拆分
【发布时间】:2013-09-28 21:43:04
【问题描述】:

我对在 devdocs.io 上阅读的内容感到困惑。

var names = "Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand ";

print(names);

var re = /\s*;\s*/;
var nameList = names.split(re);

   print(nameList);

我很难理解这一点。我知道如何用一个字符或空格进行拆分,并且我知道如果找到多个空格则进行拆分。我只是无法弄清楚“var re”语法的含义。很抱歉,这是一个初学者的问题,但我在 stackoverflow 或谷歌上找不到任何资源来为我澄清这一点。

【问题讨论】:

标签: javascript regex syntax


【解决方案1】:

这不是特殊的语法。您只需定义一个名为“re”的变量。 Javascript 中的所有变量都使用“var”声明,而不是“int”或类型。 Javascript 不知道显式变量类型。

re 可能是“正则表达式”的简写,但您可以使用任何名称,它仍然可以使用。

此外,如果变量以 / 开头和结尾,则它是一个正则表达式。定义正则表达式的另一种方法是

var re = new RegExp("\s*;\s*");

【讨论】:

  • 我了解变量是如何工作的,这只是我不熟悉的变量中的语法。我认为正则表达式是我一直在寻找的。感谢您的帮助@Willem Mulder
  • 好吧 :-) 添加了一个关于如何实例化 RegExp 的小注释...可能会派上用场。
【解决方案2】:

这是 www.regex101.com 所说的:

\s 0 to infinite times [greedy] Whitespace [\t \r\n\f\v]
; Literal ;
\s 0 to infinite times [greedy] Whitespace [\t \r\n\f\v]

所以你在[optional]whitespace followed by a semi-colon followed by [optiona]whitepsace.分手

【讨论】:

    【解决方案3】:

    您可能正在为正则表达式而苦恼。

    var re = /\s*;\s*/;
    

    正则表达式是在那些斜线/之间构造的,所以基本上你需要弄清楚\s*;\s*是什么意思。

    \s = 任何空白字符。

    * = 按顺序重复前一个字符零次或多次。

    ; = 只是';'字符。

    所以整体是:任何空白的零次或多次序列,紧随其后的是;,然后是任何空白的零次或多次序列。

    如果你的字符串是Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand 那么,拆分后应该是Harry TrumpFred BarneyHelen RigbyBill AbelChris Hand

    【讨论】:

      【解决方案4】:

      这是一个正则表达式。为了分解它,这是它正在做的事情:

      • 两个外斜线 - / - 封装表达式。它只是 new RegExp("
      • \s 表示“任何空格”。
      • \s* 表示“0 次或多次”。
      • ; 只是一个分号 ;)

      因此,整个表达式匹配任何包含零个或多个空格字符后跟分号,然后是 0 个或多个空格字符的字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-24
        相关资源
        最近更新 更多