我想要一个用于手机号码的 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)
}
答案 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)