【问题标题】:Js RegExp every other characterJs RegExp每隔一个字符
【发布时间】:2011-04-30 20:16:36
【问题描述】:

我有类似这样的随机字符串:

2d4hk8x37m

或其他。我需要在每个其他字符处拆分它。

在每个字符处拆分它很简单:

'2d4hk8x37m'.split('');

但我需要所有其他字符,所以数组会是这样的:

['2d', '4h', 'k8', 'x3', '7m']

【问题讨论】:

  • 您需要分割 2 个字符的一部分吗?

标签: javascript regex arrays split


【解决方案1】:

这里不需要正则表达式。只是一个简单的 for 循环。

var hash = '2sfg43da'
var broken = [];
for(var index = 0; index < hash.length / 2; index++)
    broken.push(hash.substr(index*2, 2));

【讨论】:

  • 这会循环所有字符并在完成一半后将空条目添加到数组中。我想在推送之前检查一个值会解决这个问题。
  • 呸!我忘记了++/2。感谢您的关注。
  • 正则表达式更具表现力。
  • @Vivin 是的。我对正则表达式投了 +1 票;)。但我认为您不应该将正则表达式用于模式匹配之外。
  • 我认为“每 2 个字符”是一种模式。
【解决方案2】:
var string = "2d4hk8x37m";
var matches = string.match(/.{2}/g);
console.log(matches);

【讨论】:

  • @Dale,您接受的答案也不使用 .split() 。我的回答为您提供了您所要求的内容,并且在我看来,这是比您接受的答案更好的解决方案。 耸耸肩
  • Awe,自从你修复它以来,我还没有测试过你的代码。我将测试性能,然后选择正确的答案。
  • @Dale,修复了吗?什么意思?
  • @rchern,我第一次检查您的代码时,它返回一个数字而不是匹配的数组,(愚蠢的我没有注意到删除.length)。 Vivin 一定是用编辑修复了它???
  • @Dale 她只是输出找到的匹配数 matches.length 然后。比赛在那里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-25
  • 1970-01-01
  • 2013-05-20
  • 2019-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多