javascript - RegExp 连续检测到多个单字母实例?

标签 javascript regex

所以我正在编写一个程序来解析 twitch 聊天,我想知道是否有一种方法可以使用正则表达式将以下内容解析为所需的结果:

“f o b a r”变成“foobar”

到目前为止,我的代码是 /(?:(\w)\s){3,}/g 这在一定程度上有效,但请考虑以下情况:

“FrankerZ R I O T FrankerZ” 捕获“T”(“R I O T” 中的最后一个字母)并选择 “Z R I O T”

我想要的是弄清楚如何检测是否有一个前后有空格的字母,以及是否至少有 3 个连续(所以 "test a b test" 没有被选为ab,只有3+时才抓包

有什么帮助吗?谢谢!

最佳答案

试试这个模式:/(?:\b\w(?:\s|$)){3,}/g

这使用单词边界元字符 \b,因此您可以获得正确的整个单词匹配,而不是您在 FrankerZ 中看到的部分匹配。此外,\s|$ 位解决最后一个字母在其后没有空格时丢失的问题,例如 R I O T 中的“T”。

例子:

var inputs = [
  "R I",
  "R I O T",
  "FrankerZ R I O T FrankerZ",
  "f o o b a r"
];

var re = /(?:\b\w(?:\s|$)){3,}/g;

inputs.forEach(function(s) {
  var match = s.match(re);
  if (match) {
    var result = match[0].replace(/\s/g, '');
    console.log('Original: ' + s);
    console.log('Result: ' + result);
  } else {
    console.log('No match: ' + s);
  }
});

演示:JSBin

编辑:更新以涵盖 3 个以上的单个字母和不匹配的示例。

关于javascript - RegExp 连续检测到多个单字母实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31689437/

相关文章:

Javascript/jquery 代码在 IE 9 之前无法运行。在 FF、Chrome、Safari 中运行良好

javascript - 尝试使用正则表达式来匹配范围

javascript - 如何使用 jquerycropit 插件最小化请求的图像?

javascript - 渲染没有更新?

java - 旧正则表达式代码的必要解释

mysql - 区分大小写

javascript - 允许仅键入浮点百分比值作为输入

JavaScript 从字符串中解析 int

javascript - 如何以编程方式跨选项卡移动

javascript - 原始 html 渲染与动态 JS 渲染的间距不同