Java 什么是只允许字符串中有一个特殊字符的正则表达式。e、 g如果用户输入两次特殊字符(@@),则它将显示无效
至少有两种可能的方法。更简单的方法是使用负前瞻:Java 什么是只允许字符串中有一个特殊字符的正则表达式。e、 g如果用户输入两次特殊字符(@@),则它将显示无效,java,Java,至少有两种可能的方法。更简单的方法是使用负前瞻: import java.util.Scanner; public class fahad { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("Enter your string"); String s = input.next();
import java.util.Scanner;
public class fahad
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("Enter your string");
String s = input.next();
if (s.matches("\\w{2,}\\.{0,1}\\w{2,}@\\D+\\.com"))
System.out.println("Valid: ");
else
System.out.println("Invalid: ");
}
}
lookahead断言匹配零个字符,但只有当输入的任何部分未与模式的任何先前部分匹配(在本例中没有该部分)时,它才会成功匹配
然而,建设性地处理这一问题更具启发性,也更适用:
if (s.matches("(?!.*@@.*$).*")) {
System.out.println("Valid: ");
}
匹配非@字符的初始子字符串,后跟零个或多个正好一个@的外观,后跟一个或多个非@字符,可以选择以一@结尾。它将匹配任何不包含两个相邻@字符的字符串(包括空字符串)。您对这里的代码有什么疑问吗?
if (s.matches("[^@]*(@[^@]+)*@?")) {
System.out.println("Valid: ");
}