正则表达式为简单的手机号码(Scala风格)

时间:2014-08-01 05:22:17

标签: java regex string scala

我想要一个用于手机号码的 scala风格的正则​​表达式。

前: -

9198989898989

11234545745892

包括+在内的总数字可以是 6到18 (我认为所有有效数字都介于其中)

如果数字匹配正则表达式返回true其他false

type S = String
  def parseMobile(number:S):Boolean={
  val phoneRx = """[+\d() ]{6,18}"""          // absolutely wrong regex
  number.matches(phoneRx)
  }

2 个答案:

答案 0 :(得分:1)

这样的事情应该有效:^\+?\d{6,18}$。这个正则表达式假设加号可能不存在。有关正则表达式的更多信息可以在here找到。

如果您想与+完全匹配,那么这将有效:^\+\d{5,17}$

答案 1 :(得分:1)

我知道你已经要求使用正则表达式,但是如果你想要一些更易于阅读和维护的东西(并且可能更快一些),那么使用纯Scala会如何:

def isPhoneNumber(str: String): Boolean =
  str.startsWith("+") && 6 <= str.size && str.size <= 18 && 
    str.drop(1).forall(_.isDigit)