2

我正在使用正则表达式来验证我的 Android 应用程序中的用户输入。
我的业务要求是不应该只允许用户输入空格或只输入数字,而应该允许输入空格和数字。

  1. " " -> 不允许。
  2. “83278”-> 不允许。
  3. “ 35 46” -> 允许。

目前我正在使用正则表达式作为

^(?![0-9 ]+$).*$ 

上面的 reqex 对于要求 #1 和 #2 可以正常工作,但对于 #3 则失败,因为它不允许用户一起输入空格和数字。

有人可以帮我改进我的 reqex 以满足我的要求.....
提前致谢!

4

1 回答 1

7

您可以使用

^(?!(?:[0-9]+| +)$).*$

或者,支持任何空格

^(?!(?:[0-9]+|\s+)$).*$

请参阅正则表达式演示正则表达式图

在此处输入图像描述

在 Kotlin 中,使用

" 1 2".matches(Regex("""(?!(?:[0-9]+|\s+)$).*""")) // true

此外,您可以使用^(?:[0-9]+|\s+)$模式并否定结果:

if ("    ".matches(Regex("""[0-9]+|\s+"""))) {
  println( "INVALID" )
} else {
  println( "VALID" )
}

由于.matches()需要完整的字符串匹配,因此不需要上述模式中的^(?:and 。)$

于 2019-09-05T09:59:35.710 回答