当前位置: 首页 > 知识库问答 >
问题:

基本国际象棋模型中的字符串验证

赫连正初
2023-03-14

我得到一个大小为16的字符串(棋子在微型棋盘上的位置)。此字符串只能包含符号:

  1. k(王)
  2. P(典当)
  3. n(骑士)
  4. R(rook)
  5. B(主教)
  6. Q(皇后)
  7. 和空白(自由字段)。

我如何验证这个字符串的正则表达式,以检查字符串大小是否真的是16,符号只有这些,而且它必须包含一个K符号(因为一个King应该是)

共有1个答案

琴献
2023-03-14

由于您确切地知道允许使用哪些字符,因此可以对k的一次出现使用一个肯定的前瞻断言

然后使用模式[KQBNRP]{16}匹配列出的16次中的任何一次

^(?=[QBNRP ]*K[QBNRP ]*$)[KQBNRP ]{16}$

正则表达式演示

    null
 类似资料:
  • 我是编程的新手,我正在尝试实现一个小的象棋游戏。 我目前正在为每件作品的验证移动而挣扎。 字典是: 我在每个子类中都创建了一个函数(Pawn,Rook,Queen...)这应该能证明这次行动是正确的。语法类似于: 目前,我可以移动任何白色树懒或树懒上有一个黑色的部分(但我不能吃我自己),反之亦然。 我想我使用的是而不是列表列表这一事实使事情变得更加困难。我真的迷路了。这将是惊人的,如果你可以帮助我

  • DreamChess 是一款开放源码、跨平台(可在 Windows、Mac OS X 及 Linux 上运行)的 3D 国际象棋游戏。该游戏包含自身的引擎 Dreamer,提供各种国际象棋棋盘,并具有背景音乐及声效等其他附属功能。

  • 我正在下国际象棋,除了一件事,我几乎得到了所有的东西:我需要使棋手不可能将棋子移动到棋盘上。我很难解决这个问题。 我现在用伪代码生成的有效移动是:类getMoveLocations(我定义了一个位置为国际象棋中的一个方块):如果这个位置在边界内,这个位置的棋子是敌人的棋子,并且模拟的移动不会导致棋盘被检查,然后将该位置添加到工件可以移动到的可能位置。 问题是我如何检查棋盘是否“在检查中”。在我的代

  • 我正在创建一个国际象棋游戏,现在我已经用所有棋子填充了我的图形棋盘,现在我需要使用鼠标滑动器来移动棋子。在实现图形版本之前,我创建了一个2D控制台版本,它采用了“玩家移动”,所以我有所有这些方法,但我现在需要使用Mouselistener,我阅读了这些方法,但是,我需要在每个类中实现Mouselistener吗? 我有1个抽象工件类和7个子类(包括虚拟工件),还有一个棋盘类,它填充所有工件,并提供

  • 我已经有一个Board对象,包含一个碎片列表。Piece是一个抽象类,有一个位置(x,y)和一个颜色(黑色或白色)。然后是King、Queen、Knight这三个类,实现了Piece类。 谢谢

  • 上面的代码显示了一个可以上下移动的部分的示例。这不是一个有效的棋步。所以,如果我要移动一个皇后,我该怎么做呢?我们只是假设我们已经有了一个矩阵(x,y)8×8的板。