2012-09-25 58 views
5

我可以使用正則表達式查找特殊字符在Java中

var regex = /[$&+,:;[email protected]#|]/; 

if(elem.match(regex)) { // do something 
} 

以尋找是否有在JavaScript字符串任何特殊字符。

如何在Java中使用類似的正則表達式?

我曾嘗試:

str.match("\\="); // return false 

例如:

String str = "123=456"; 

我試圖檢測 「=」 str中。

這沒有奏效。我究竟做錯了什麼?

+4

一個簡單的谷歌搜索 「Java的正則表達式」,你會發現:['java.util.regex'](http://docs.oracle.com/javase/6/ docs/api/java/util/regex/package-summary.html)都是你自己的! – verdesmarald

+0

顯示你試過的圖案 –

回答

15

試試這個。

Pattern regex = Pattern.compile("[$&+,:;[email protected]#|]"); 
Matcher matcher = regex.matcher("123=456"); 
if (matcher.find()){ 
    // Do something 
} 

編輯:matches()檢查所有字符串和find()發現它在字符串的任何部分。

鏈接:http://docs.oracle.com/javase/tutorial/essential/regex/index.html

+1

對於他特定的正則表達式,模式將使用'Pattern.compile(「[$ &+,:; =?@#|]」)'創建,不帶斜槓。 – Brian

+0

我試過你的代碼。它不能工作:( –

+0

對不起,我的錯.... 因爲我用JSP,我忘了刷新我的服務器...... –

0

使用

String.matches(String regex); 
-3

下面是一些示例代碼:

import java.lang.Scanner; 
/*setup everything here, you just need that import*/ 
Scanner input = new Scanner(System.in); 
//ask for input 
String str = input.next(); 
if(str.contains(/*char1*/) || str.contains(/*char2*/) || /*continue the pattern, 1 for every character*/) 
{ 
    //event if it contains one 
} 
else 
{ 
    //event if it does not contain any 
} 

的alternatve:

import java.lang.Scanner; 
/*put the program parts here*/ 
Scanner input = new Scanner(System.in); 
String str = input.next(); 
List<char> chars = Arrays.asList(/*put chars here, seperated with commas*/); 
for(int x = 0; x < chars.size();x++) 
{ 
    if(str.contains(chars[x])) 
    { 
     //event if it contains one 
    } 
    else 
    { 
     //event if it does not contain one 
    } 
} 
//resume program 

這些代碼段將工作,承擔一切都正確輸入。

+0

有人會解釋他們爲什麼低估了我的答案嗎?它在我輸入完成之前提交,並且我編輯它以包含其餘的信息。 – Azulflame

+0

這將只檢查是否所有字符都在'sequence'中,而不是像''regex''那樣的單個'char'。 -1 –

+0

@SriHarshaChilakapati你能解釋一下嗎?第一個檢查一個或多個字符是否在字符串中,第二個是基於包含特殊字符的列表的大小,每次使用for循環執行一次。 – Azulflame