android/guava/src/com/google/common/primitives/Doubles.java
@Beta
  @GwtIncompatible // regular expressions
  @NullableDecl
  public static Double tryParse(String string) {
    if (FLOATING_POINT_PATTERN.matcher(string).matches()) {
      // TODO(lowasser): could be potentially optimized, but only with
      // extensive testing
      try {
        return Double.parseDouble(string);
      } catch (NumberFormatException e) {
        // Double.parseDouble has changed specs several times, so fall through
        // gracefully
      }
    }
    return null;
  }
@Beta
  @GwtIncompatible // regular expressions
  @NullableDecl
  public static Double tryParse(String string) {
    if (FLOATING_POINT_PATTERN.matcher(string).matches()) {
      // TODO(lowasser): could be potentially optimized, but only with
      // extensive testing
      try {
        return Double.parseDouble(string);
      } catch (NumberFormatException e) {
        // Double.parseDouble has changed specs several times, so fall through
        // gracefully
      }
    }
    return null;
  }
Parses the specified string as a double-precision floating point value. The ASCII character
{@code '-'} (<code>'&#92;u002D'</code>) is recognized as the minus sign.

<p>Unlike {@link Double#parseDouble(String)}, this method returns {@code null} instead of
throwing an exception if parsing fails. Valid inputs are exactly those accepted by {@link
Double#valueOf(String)}, except that leading and trailing whitespace is not permitted.

<p>This implementation is likely to be faster than {@code Double.parseDouble} if many failures
are expected.

@param string the string representation of a {@code double} value
@return the floating point value represented by {@code string}, or {@code null} if {@code
string} has a length of zero or cannot be parsed as a {@code double} value
@since 14.0