我有 REGEX,我希望在下面排除某些字符。正确排除这些字符:£“~#¬|{} 但这些不是: @[]/?;:
因此,例如,test£test 被正确标识为无效,但test@test被错误地标识为有效。
在https://regex101.com/上测试发现问题在于括号,并指出我需要转义第一个([括号]和-[连字符],就像这样- ^[a-zA-z0-9!$%^
有什么办法可以让这个正则表达式按照我想要的那样运行吗?抱歉,如果这很明显的话。
final String REGEX = "^[a-zA-z0-9!$%^&*()-_=+]+?$";
System.out.println ("Please enter a password");
String password = input.next();
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(password);
if (!m.matches()){
System.out.println("Illegal characters");
抱歉-我现在意识到我有很多元字符都需要转义。以下REGEX的行为符合预期,使用双反斜杠转义每个元字符:
final String REGEX = "^[a-zA-z0-9\\!\\$%\\^&*\\(\\)\\-_\\=\\+]+?$";
如果有更优雅的方式我很想听听!
正则表达式的问题在于它包含需要转义的特殊字符。
如果此页中引用的所有字符在密码中有效,则需要转义。
模式文档
因此,您应该使用如下正则表达式。然而,我还没有彻底测试过这个,所以请编写一些彻底的单元测试来涵盖所有合法的可能性。
"^[a-zA-z0-9!\\$%\\^&\\*\\(\\)\\-_\\=\\+]+?$"
^[a-zA-z0-9!$%^&*()-_=+]+?$
^^^ ^^^
第一个带下划线的范围是A-z
。这匹配:
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz
第二个带下划线的范围对应于
)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
请看这里使用的正则表达式:注意正则表达式只是下面第一个例子的集合。这是为了显示它实际匹配的字符。
使用以下任一项
^[a-zA-Z0-9!$%^&*()\-_=+]+?$
^[a-zA-Z0-9!$%^&*()_=+-]+?$
^[\w!$%^&*()=+-]+?$
^[\w!$%&^(-+=-]+?$
我正在考虑从Hibernate转移到jOOQ,但我找不到例如如何在Hibernate中对这样的进行Pattern约束: 在jOOQ我该怎么做?
问题内容: 我正在使用Base64编码来编码Java中的用户ID字段。 我想知道上面的字符串abc是否包含字符“,:”吗? 当以abc返回Base64编码的字符串时,它是否会包含以下字符? 问题答案: 您不会在Base64编码的字符串中看到任何逗号,冒号或双引号。由于等号用于填充结尾内容,因此您会看到等号。
我试图找到一种方法来确定一个字符串是否至少包含n个特定顺序的字符。 我正在处理大量的手写数据,错别字的数量相当疯狂。 我需要在一个大字符串中查找文本部分,如下所示: 看起来有点奇怪,但很管用。 不幸的是,怪异还不止于此。我需要修改这个regex,以便它也允许每个单词中缺少1个字母。 因此,我需要修改这个regex,以便它也适用于以下内容: 我一直在研究{4},但我不确定这是正确的方向,也不确定它是
问题内容: 我似乎无法使实例正常工作。我使用的代码如下: 子类 该代码输出 问题答案: 您需要覆盖。而不是这样做,您实现了一个带有signature 的方法。因此,您使用的是为相等性测试定义的默认方法。 默认实现基于对象标识,因此,该集合“允许”您添加两个在语义上相等的不同对象。
我有一个程序有很多数据对象。每种方法都实现了可比性,并设置为从最高到最低(基于简单的长值)排序,包括重复的值。我希望这些对象存储在一个集合/列表中,这样我就可以遍历它,并在其各自的位置取出每个对象。 我已经研究过使用树集,但是这不允许重复,因此只保留具有相同值的多个对象中的一个。然后我找到了TreeMultiset,它可以保持元素具有相同的值。唯一的问题是,它只是存储同一对象的副本,而不是多个相等
我一直在捕捉非数字时遇到问题。 我试过了,但抓不住。如果我让它捕获非数字,但不让用户再次尝试输入。。。它完全停止了我的代码。 这是我的密码: