Java中查找特殊字符的正则表达式

6
我可以使用

var regex = /[$&+,:;=?@#|]/;

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

如何在Javascript中查找字符串中是否有特殊字符。

我该如何在Java中使用类似的正则表达式?

我已尝试过:

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

例如:

String str = "123=456";

我尝试在字符串中检测 "="。

但没有成功。我做错了什么?


5
只需要在谷歌上搜索“java正则表达式”,你就可以自己找到java.util.regex - verdesmarald
4个回答

16

试试这个。

Pattern regex = Pattern.compile("[$&+,:;=?@#|]");
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
我尝试了你的代码。它不能工作 :( - Shih-En Chou
抱歉,是我的错... 因为我使用了JSP,忘记刷新了我的服务器... - Shih-En Chou

2

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
}

一种替代方案:

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

这些代码片段将会运行,假设所有的导入都正确。


有人可以解释一下为什么他们给我的回答投了反对票吗?那是因为它在我还没有完成输入之前就被提交了,然后我编辑了它以包含剩下的信息。 - Azulflame
这只会检查所有字符是否在“序列”中,而不是像他的“正则表达式”一样是单个“字符”。-1 - Sri Harsha Chilakapati
@SriHarshaChilakapati,你能解释一下吗?第一个检查一个或多个字符是否在字符串中,第二个则使用基于包含特殊字符的列表大小的for循环逐个检查。 - Azulflame
这种类型的检查仅限于检查CharSequence,这就是为什么要实现正则表达式的原因。 - Sri Harsha Chilakapati
1
正则表达式是一个经过多年发展的非常强大的工具。以不好的方式重新发明它并不是一个好的解决方案。 - juergen d

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接