2012-09-25 60 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