在以下示例中,符号/\s*;\s*/
的含义是什么?它在string.split()
命令中用作分隔符。
var names = 'Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand ';
console.log(names);
var re = /\s*;\s*/;
var nameList = names.split(re);
console.log(nameList);
答案 0 :(得分:2)
/\s*;\s*/
是一个正则表达式,通常用于模式匹配。您的正则表达式(\s*;\s*
)转换为:
\s
匹配任何空格字符[\r\n\t\f
]
*
表示在零和无限次之间应用之前的匹配,尽可能多次,根据需要回馈[贪婪]
;
字面匹配;
字符
\s
匹配任何空格字符[\r\n\t\f
](与项目#1相同)
*
表示在零和无限次之间应用之前的匹配,尽可能多次,根据需要回馈[贪婪](与子弹#2相同)
这里使用正则表达式而不是.split
的简单字符串参数的原因是因为原始字符串在元素之间具有不同的分隔符 - 空格的不同组合和分号。没有一个可以传递的简单字符串可以找到它们 - 你可以只使用;
,但这会在数组的某些元素的开头和/或结尾留下空格。正则表达式确保我们匹配所有变体。
答案 1 :(得分:1)
使用JavaScript的.split(separator)
方法,您可以从字符串中创建数组。 separator
可以是简单的字符串,也可以是更复杂的正则表达式。
在您的示例中,提供的正则表达式为/\s*;\s*/
。正面和背面斜线只是分隔符,表示它是一个正则表达式。 \s*;\s*
是您的模式,意思是:任意数量的空白字符(空格,制表符),后跟分号,后跟任意数量的空白字符。它是"my string".split(";")
的一个更奇特的版本,因为它修剪了分号前后的空白。
示例:
var test1 = "dog;cat;fish".split(";");
// test1 is ["dog", "cat", "fish"]
var test2 = "dog;cat;fish".split(/\s*;\s*/);
// test2 is ["dog", "cat", "fish"]
只要分号周围没有白色字符,那两个字符就会返回完全相同的结果。但是:
var test3 = "dog ; cat; fish".split(";");
// test3 is ["dog ", " cat", " fish"]
var test4 = "dog ; cat; fish".split(/\s*;\s*/);
// test4 is ["dog", "cat", "fish"]
这一次,test4的结果要复杂得多,因为没有空格。
答案 2 :(得分:0)
在regular expressions \s
元字符代表空格字符。
空格字符可以是:
空格字符
标签字符
回车符号
新行字符
垂直制表符字符
换页符号
*
代表所有
;
代表结肠。
此处的表达式\s*;\s*
表示使用spilit() JavaScript方法将;
后面或前面的任何空格都split
放入数组中。
答案 3 :(得分:0)
粗略地说,它将输入字符串拆分为;
,省略了;
周围的任意数量的空格。
var input = "One ; Two ;Three ";
input.split(";") // returns ["One ", " Two ", "Three "]
input.split(/\s*;\s*/) // returns ["One", "Two", "Three"]