首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查副本的Regex

检查副本的Regex
EN

Stack Overflow用户
提问于 2020-10-15 22:06:25
回答 1查看 81关注 0票数 1

我正在写一个HTML/JS宾果游戏。它需要有允许用户通过输入需要使用regex验证的字符串来指定自己的宾果板的功能。规格如下:

字符串格式为

  • B(15,9,8,7,14)I(25,21,20,22,29)N(38,41,f,34,31)G(60,57,48,56,49)O(69,70,72,64,71),其中B( 15,9,8,7,14 )指董事会上的B列包含15、9、8、8、7和14,I( 25,21,20,22 , 29 )指一栏包含25、21、20、22和29。以此类推。字符串中使用'f‘来表示空闲空间。

到目前为止,我已经:

代码语言:javascript
复制
var string = /(B|b)(((1[0-5]|[1-9]),?){5})(I|i)(((1[6-9]|2[0-9]|30),?){5})(N|n)(((3[1-9]|4[0-5]),){2}(F|f),((3[1-9]|4[0-5]),?){2})(G|g)(((4[6-9]|5[0-9]|60),?){5})(O|o)(((6[1-9]|7[0-5]),?){5})/g;

它验证上述示例,但不检查重复项。即B(15,15,8,7,14)应该会失败。我认为消极展望是正确的工具,但我不知道如何在这种情况下使用它

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-16 03:21:16

将字符串中的数字提取到Array中,并检查是否重复:

代码语言:javascript
复制
var bingoStrings = [
  "B(15,9,8,7,14)I(25,21,20,22,29)N(38,41,f,34,31)G(60,57,48,56,49)O(69,70,72,64,71)",
  "B(15,15,8,7,14)I(25,21,20,22,29)N(38,41,f,34,31)G(60,57,48,56,49)O(69,70,72,64,71)"
];

bingoStrings.forEach(bingoString => {
  var bingoArray = bingoString.match(/\d+/g);
  var hasDuplicates = bingoArray.some(number =>
    bingoArray.indexOf(number) !== bingoArray.lastIndexOf(number)
  );
  console.log(bingoString);
  console.log("has " + (hasDuplicates?"":"no ") + "duplicates\n");
});

作为一项职能:

代码语言:javascript
复制
var bingoStrings = [
  "B(15,9,8,7,14)I(25,21,20,22,29)N(38,41,f,34,31)G(60,57,48,56,49)O(69,70,72,64,71)",
  "B(15,15,8,7,14)I(25,21,20,22,29)N(38,41,f,34,31)G(60,57,48,56,49)O(69,70,72,64,71)"
];

hasDuplicates = (bingoString) => 
  bingoString
  .match(/\d+/g)
  .some((number, index, bingoArray) =>
    bingoArray.indexOf(number) !== bingoArray.lastIndexOf(number)
  )
;
  
bingoStrings.forEach(bingoString => {
  console.log(bingoString);
  console.log("has " + (hasDuplicates(bingoString)?"":"no ") + "duplicates\n");
});

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64380305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档