首页 > 解决方案 > 验证所有场景的正则表达式

问题描述

我正在用java编写一个匹配以下内容但不匹配无效字符串的正则表达式。我无法正确过滤它,使其仅匹配有效列表而不匹配无效列表。

这是我的正则表达式-(?!\!)([\(\)XSAa\\\#\+\-\s\.\!])+)

有效字符串 -

"A\\#A\\#A\\#","+\#\#\#","(\\#\\#\\#) \\#\\#\\#-\\# \\#\\#\\#“,“\#\#\#。\#\#\#。\#\#\#\#“,“!\#\#“,“X-\#\ #\#\#","\#\#\#\#\#-SSSS","啊啊啊!!"`

在这里它不匹配!\\#\\#,因为我已经说过它不应该包含!

无效输入 -!A!\\#!A!\\#!A!\\#, !X, A#A#A#, !a!a!a!a!a

但不幸A#A#A#的是,它匹配失败的场景。

有人可以帮我弄这个吗?

标签: javaregex

解决方案


该注释的末尾有一个不匹配的括号,但除此之外它只是一个否定的前瞻(因此它不以“!”开头),后跟字符类中的任意数量的字符。其中包括“A”和“#”,因此这些字符的任何序列都将被接受。我不知道你真正想要匹配什么,但这就是为什么 A#A#A# 这样做的解释。


推荐阅读