regex 用于简单FEN验证的正则表达式

pu3pd22g  于 2022-12-01  发布在  其他
关注(0)|答案(2)|浏览(181)

我想验证一个chess FEN字符串,我正在为它编写正则表达式。我只想实现非常简单的验证。下面是我希望与我的正则表达式匹配的规则:

  • 正好7个“/”字符
  • 字符串的开头和结尾不能为“/”
  • 斜杠之间必须是1-8之间的数字或大写或小写的字母PNBRQK
    匹配示例

第八届全国人民代表大会常务委员会

不匹配示例

第一次世界大战结束后
第一个月第二个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月第一个月
第一次世界大战结束后
8/8/8/8
目前,我已经能够使用以下正则表达式在字符串中的任何位置实现精确的7“/”:
/^(?:[^\/]*\/){7}[^\/]*$/gm
我不确定如何实现其余的,因为RegEx不是我的强项。

zvms9eto

zvms9eto1#

/^([1-8PNBRQK]+\/){7}[1-8PNBRQK]+$/gim

/gim =g全域,**不区分大小写,**多行。
我在https://regexr.com/上得到了上面的工作--这是我最喜欢的解决regex问题的地方之一(但我知道网上还有很多其他的好资源)。
希望这对你有帮助。

xzlaal3s

xzlaal3s2#

这样就可以了:(通过所有测试)

/^(?:(?:[PNBRQK]+|[1-8])\/){7}(?:[PNBRQK]+|[1-8])$/gim

你所需要的只是对你要找的字符使用正匹配,而不是“非斜杠”。键添加是带有一个或多个PNBRQK * 或 * 1-8数字的非捕获组。同一组在表达式的末尾重复。
对了,我还添加了i标志,用于不区分大小写的匹配。

相关问题