如果找到一个或多个空格,则拆分

Split if one or more spaces are found

本文关键字:空格 拆分 如果 一个      更新时间:2023-09-26

我对我在 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或google上找不到任何资源来为我澄清这一点。

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

var re = /'s*;'s*/;

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

's = 任何空格字符。

* = 将序列中的前一个字符重复零次或更多次。

; = 只是";"字符。

所以整体是:任何空白的零倍或更多次序列,紧接着是;,然后是任何空白的零倍或更多

次序列。

如果您的字符串Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand然后,拆分后应该Harry Trump Fred Barney Helen Rigby Bill Abel Chris Hand

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

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

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

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

以下是 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.上分裂

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

  • 两个外部斜杠 - / - 封装表达式。它只是新正则表达式("
  • 's的意思是"任何空格"。
  • 's*表示"0 次或更多次"。
  • ;只是一个分号;)

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