簡體   English   中英

使用負前瞻正則表達式的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");

在當前的測試代碼中,我使用的每個字符串都返回false。

誰能為我提供有關如何修改此正則表達式以使其符合我的規范的指導。

您不想在課程中按此順序使用此+-/
-以這種方式使用的是范圍運算符,而不是文字-。
若要使其字面值,請將其添加到末尾或開頭,或對其進行轉義
它可以在任何地方。

基本上,你要在這個類匹配任何東西。
Pattern p = Pattern.compile("[^\\\\d\\\\srx*+\\\\-/)]");

如果與if( m.matches() )相匹配, if( m.matches() )確實找到了非法字符。
要么,
如果不匹配if( !m.matches() )則找不到非法字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM