Java 使用负先行正则表达式检查输入
Java input check using negative lookahead regex
我正在尝试使用正则表达式否定先行检查是否输入了任何无效字符。我要检查的字符是除 0-9、空格、*、/、+、-、r、x 之外的所有字符。
String word = "(l4+3q)*(5+7-8)/(5)";
Pattern p = Pattern.compile("(?![\d\srx*+-/)]+)");
Matcher m = p.matcher(word);
if(m.matches()) System.out.println("NO");
在当前的测试代码中,我使用的每个字符串 returns false。
任何人都可以指导我如何修改此正则表达式以符合我的规范。
您不想在 class 中按此顺序使用此 +-/
。
以这种方式使用的 -
是范围运算符,而不是文字 -.
要使其成为文字,请将其添加到末尾或开头,或将其转义
它可以在任何地方。
基本上,您想匹配 而不是 class.
中的任何内容
Pattern p = Pattern.compile("[^\d\srx*+\-/)]");
如果它匹配 if( m.matches() )
,它确实找到了一个非法字符。
或者,
如果它不匹配 if( !m.matches() )
它没有找到非法字符。
我正在尝试使用正则表达式否定先行检查是否输入了任何无效字符。我要检查的字符是除 0-9、空格、*、/、+、-、r、x 之外的所有字符。
String word = "(l4+3q)*(5+7-8)/(5)";
Pattern p = Pattern.compile("(?![\d\srx*+-/)]+)");
Matcher m = p.matcher(word);
if(m.matches()) System.out.println("NO");
在当前的测试代码中,我使用的每个字符串 returns false。
任何人都可以指导我如何修改此正则表达式以符合我的规范。
您不想在 class 中按此顺序使用此 +-/
。
以这种方式使用的 -
是范围运算符,而不是文字 -.
要使其成为文字,请将其添加到末尾或开头,或将其转义
它可以在任何地方。
基本上,您想匹配 而不是 class.
中的任何内容
Pattern p = Pattern.compile("[^\d\srx*+\-/)]");
如果它匹配 if( m.matches() )
,它确实找到了一个非法字符。
或者,
如果它不匹配 if( !m.matches() )
它没有找到非法字符。