1

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

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

它们似乎都不起作用。

谁能让我知道正则表达式来做到这一点?

4

3 回答 3

5

contains不采用正则表达式,而是一个简单的字符串作为参数。所以在你的例子中,它会在你的字符串中寻找这个确切的字符序列:[*?=:]

您可以改为使用String.matches

str.matches(".*[*.=,?:]+.*");
于 2013-05-08T03:41:53.617 回答
4

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

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

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

于 2013-05-08T03:40:05.023 回答
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)检查字符串(第一个参数)是否包含与正则表达式(第二个参数)匹配的子字符串。
于 2018-11-29T10:07:48.110 回答