gpt4 book ai didi

java 正则表达式 - 必需的字符串验证

转载 作者:行者123 更新时间:2023-12-02 04:04:37 25 4
gpt4 key购买 nike

我需要一个正则表达式来检查字符串并在满足所有条件时返回 true。

条件:

  1. 字符串 8 个字符的长度

  2. 字符串包含2小写字母4< em> 大写字母 和 2 符号(#-).

  3. 所有符号或字符都可以位于字符串中的任何位置。

我的 Junit 测试用例

package com.ap;

import static org.junit.Assert.assertTrue;
import org.junit.Test;

public class RegularExpressionTest {

private static RegularExpression re = new RegularExpression();

@Test
public void correctInput1() {
boolean result = re.check("abABCD#-");
assertTrue(result);
}

@Test
public void correctInput2() {
boolean result = re.check("bABCD#-a");
assertTrue(result);
}

@Test
public void correctInput3() {
boolean result = re.check("bABCD#-a");
assertTrue(result);
}

@Test
public void correctInput4() {
boolean result = re.check("ABCD#-ab");
assertTrue(result);
}

@Test
public void correctInput5() {
boolean result = re.check("CD#-abAB");
assertTrue(result);
}

@Test
public void correctInput6() {
boolean result = re.check("#aABb-CD");
assertTrue(result);
}

@Test
public void correctInput7() {
boolean result = re.check("-A#bDaBC");
assertTrue(result);
}

@Test
public void incorrectInput1() {
boolean result = re.check("abABC#-"); //total 7 character
assertTrue(result);
}
@Test
public void incorrectInput2() {
boolean result = re.check("abABCDE#-"); //total 9 character
assertTrue(result);
}

@Test
public void incorrectInput3() {
boolean result = re.check("abABCDE#"); // "-" symbol absent
assertTrue(result);
}

@Test
public void incorrectInput4() {
boolean result = re.check("abABCDEFG"); // Symbol absent
assertTrue(result);
}

@Test
public void incorrectInput5() {
boolean result = re.check("ABCDEEF#-"); //lower case letter absent
assertTrue(result);
}

@Test
public void incorrectInput6() {
boolean result = re.check("abcdef#-"); // Upper case letter absent
assertTrue(result);
}

@Test
public void incorrectInput7() {
boolean result = re.check("abcABCf#-");//4 Uppercase & 2 lowercase character
assertTrue(result);
}


}

最佳答案

(?=(?:.*[a-z]){2})(?=(?:.*[A-Z]){4})(?=(?:.*[-#]){2})^.{8}$

See it in action

<小时/>总体思路:

  • (?:.*x){n} - 如果字符串至少有 n xes
  • ,则匹配
  • (?=...) - 多个 lookaheads可以连接起来检查字符串的多个属性
  • ^.{n}$ - 从字符串开头到字符串结尾正好有 n 个字符。

关于java 正则表达式 - 必需的字符串验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34483378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com