我尝试编写正则表达式来验证algebraic chess notation中的移动。这就是我到目前为止所拥有的:
/
O-O(-O)? # Castling
|[KQRBN]x?[a-h][1-8]\+? # Most normal moves and captures
/
我失去的是典当促销。
骑士,主教或中心棋子只能通过捕获来提升它开始的文件或任何一方的文件。根据是否在a-或h-文件上,可以通过直线移动或捕获到一侧来促进车辆典当。像
这样的东西/[a-h](x[a-h])?[18]=[QRBN]\+?/
不起作用,因为fxh8不是有效的移动(只有fxe8和fxg8)。我可以用
走很长的路/(a(xb)?|h(xg)?|b(x[ac])?.../ # insert 5 more files in place of the ...
但这不是很有效率。我想使用分组,这样我就可以做车,以及其他一切。我有类似的想法:
/([b-g])(x(\1±1))?/
要表明"字母b到g后面可能跟着它们之前或之后的字母"。
答案 0 :(得分:1)