让我们考虑一个名为calc的字符串,其定义为:
const calc = "Find 2&3";
现在有一个名为parse()的函数,它的功能如下:
console.log( parse(calc) );
// => First character is 2 while last character is 3
因此,我们观察到parse()函数计算出&落在的第一个和最后一个字符。那么,可以进行parse()吗?如果是,怎么办?如果没有其他选择?如果有倍数怎么办?
例如
const calc = "Find 2&3 , 4&5 , 6&7";
console.log( parse(calc) );
// => First character is 2 while last character is 3
// => First character is 4 while last character is 5
// => First character is 6 while last character is 7
您可以String.match()
与正则表达式配合使用,以匹配第一个字符和最后一个字符,它们之间不能有空格(\S
),并且&
介于两者之间(有关更多信息,请参见regex101)。
注意:匹配的结果是一个包含匹配字符串的数组,并且两个捕获组的结果相同。我使用解构将它们关联到first
和last
。
const calc = 'Find 2&3';
const [, first, last] = calc.match(/(\S)\S*&\S*(\S)/);
console.log(first, last);
要获得所有匹配项,您可以使用String.matchAll()
(IE或Edge不支持)。结果将是一个迭代器,您可以将其扩展到包含带有结果的子数组的数组。
const calc = 'Find 2&3 , 4&5 , 6&7';
const matches = calc.matchAll(/(\S)\S*&\S*(\S)/g);
console.log([...matches]);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句