我想验证一个国际象棋分字符串,我正在为它的Regex工作。我只想实现非常简单的验证。下面是我希望与我的正则表达式相匹配的规则:
PNBRQK大写或小写。匹配示例
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR
非匹配示例
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR/
/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR/
rnbqkbnr/pppppppp/8/8/8/10/PPPPPPPP/RNBQKBNR
rnbqkbnr/Z/8/8/8/8/PPPPPPPP/RNBQKBNR
目前,我已经能够使用以下regex实现字符串中任何位置的确切7 "/“:
/^(?:[^\/]*\/){7}[^\/]*$/gm
我不知道如何实现其余部分,因为RegEx不是我的强项。
发布于 2022-11-29 23:51:10
/^([1-8PNBRQK]+\/){7}[1-8PNBRQK]+$/gim/gim = global,case I,multiline。
我在https://regexr.com/上做了上面的工作,这是我最喜欢的解决正则表达式问题的地方之一(但我知道网上还有很多其他好的资源)。
希望这能有所帮助。
发布于 2022-11-29 23:47:48
这应该可以做到:(通过所有的测试)
/^(?:(?:[PNBRQK]+|[1-8])\/){7}(?:[PNBRQK]+|[1-8])$/gim你所需要的只是对你所追求的字符使用正匹配,而不是“不斜杠”。关键添加是一个或多个PNBRQK或1-8之间的数字的非捕获组。在表达式末尾重复相同的组。
哦,我还为不区分大小写的匹配添加了i标志。
https://stackoverflow.com/questions/74621387
复制相似问题