当前位置: 首页 > 知识库问答 >
问题:

java正则表达式最小字符无效

楚泳
2023-03-14
^[a-zA-Z1-9][a-zA-Z1-9_\\.-]{2,64}[^\\.-]$

这是应该符合以下条件的正则表达式

应仅以字母和数字开头,包含字母和数字,点和连字符不应以连字符结尾

它适用于所有条件,但当我尝试使用三个字符时,如

vu6
111
aaa

在四个字符验证正常工作后,我是否遗漏了什么

共有1个答案

终翔
2023-03-14

您的Regex不起作用的原因:

希望把它分成小块会有所帮助:

^[a-zA-Z1-9][a-zA-Z1-9_\\.-]{2,64}[^\\.-]$

[a-zA-Z1-9]:将匹配单个字母数字字符(_除外)

[a-zA-Z1-9_\\.-]{2,64}:将匹配字母数字字符"."-

[^\\.-]:将期望正好1个字符,不应该是“.”或“-”

解决方案

您可以使用2个简单的正则表达式:

这个答案假设要匹配的字符串的长度在[3-65]之间(包括3-65)

首先,这将实际验证字符串

[a-zA-Z1-9][a-zA-Z1-9_\\.-]{2,64}

其次,这将检查char是否以 ". |-"结尾

[^\\.-]$

在Java

Pattern pattern1 = Pattern.compile("^[a-zA-Z1-9][a-zA-Z1-9_\\.-]{2,64}$");
            Pattern pattern2 = Pattern.compile("[^\\.-]$");
            Matcher m1 = pattern1.matcher(input);
            Matcher m2 = pattern1.matcher(input);
            if(m1.find() && m2.find()) {
                System.out.println("found");
            }
 类似资料:
  • 问题内容: 当匹配某些字符(例如换行符)时,可以使用正则表达式“ \\ n”或仅使用“ \ n”。例如,以下将字符串拆分为行数组: 但是以下内容同样适用: 我的问题: 上面两个是 完全 一样地工作,还是有细微的差别?如果是后者,能否举个例子,说明您得到不同的结果? 还是仅在[可能/理论]表现上有所不同? 问题答案: 在当前情况下没有区别。通常的字符串转义序列是在单个反斜杠的帮助下形成的,然后有效的

  • 本文向大家介绍正则表达式“ [[X?+]””元字符Java,包括了正则表达式“ [[X?+]””元字符Java的使用技巧和注意事项,需要的朋友参考一下 可能量词[X?+]匹配一次存在的X或根本不存在的X。 示例 输出结果

  • 主要内容:实例下表包含了元字符的完整列表以及它们在正则表达式上下文中的行为: 字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。 ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或

  • 上面的reg exp如何支持小写字母。

  • 下面是我正在使用的正则表达式的最新版本,它抛出了错误“Invalid regular expression” XSD:正则表达式在位置4验证失败:当前选项设置不支持此表达式。 我在xsd文件中得到了这个异常,我正在message broker(IIB)中开发这个xsd。有谁能帮我解决这个问题吗?

  • 如果输入的文本与我的模式不匹配: 如果在输入的文本中找到\n字符,那么文本将不会被验证,但我想添加最小和最大长度到所有整个字符串。我希望如果文本不匹配的模式和字符串长度低于3和超过10,那么它将不会被验证,我知道下面的模式是不正确的,但至少我试图这样修改它: 对于示例: 有什么更正或建议吗?