String的正则表达式包含

时间:2013-05-08 03:36:47

标签: java regex

我需要知道给定字符串是否包含任何字符*.=,?:。我尝试过(使用str.contains):

  • [*?=:]&
  • [^*?=:]&
  • ^[*?=:]

它们似乎都不起作用。

有人能让我知道正则表达式吗?

3 个答案:

答案 0 :(得分:5)

contains不使用正则表达式,而是使用简单的String作为参数。因此,在您的示例中,它将在您的字符串中查找这个确切的字符序列:[*?=:]

您可以使用String.matches

str.matches(".*[*.=,?:]+.*");

答案 1 :(得分:4)

String.contains搜索指定的字符序列 - 它不使用正则表达式。相反,使用:

s.matches(".*[*.=,?:].*")

匹配任何由任何字符组成的字符串,后跟您提到的字符之一,后跟任何字符。

答案 2 :(得分:0)

方法java.lang.String.contains(CharSequence)不支持正则表达式。您必须创建自己的小助手方法。

要检查字符串是否包含匹配特定正则表达式的子字符串,可以使用如下方法:

/**
 * Checks if the given string contains a substring that matches the given
 * regex.
 */
public boolean checkStringContainsStringMatchingRegex(String pString, String pRegex) {
    return Pattern.compile(pRegex).matcher(pString).find();
}

java.lang.String.matches(String)的区别:

  • String.matches(String)检查字符串是否匹配给定的正则表达式
  • checkStringContainsStringMatchingRegex(String, String)检查字符串(第一个参数)是否包含与正则表达式(第二个参数)匹配的子字符串。