2

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

4

4 回答 4

3

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

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

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

\s= 任何空白字符。

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

;= 只是 ';' 特点。

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

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

于 2013-09-23T21:03:05.263 回答
0

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

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

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

于 2013-09-23T21:06:05.407 回答
0

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

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

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

var re = new RegExp("\s*;\s*");
于 2013-09-23T20:56:59.037 回答
0

这是 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.

于 2013-09-23T21:00:04.137 回答