正则表达式仅阻止数字或空格,但允许数字和空格作为输入

Zeb*_*eba 2 java regex android regex-negation kotlin

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

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

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

^(?![0-9 ]+$).*$ 
Run Code Online (Sandbox Code Playgroud)

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

有人可以帮我改善我的reqex,以满足我的要求.....
在此先感谢!

Wik*_*żew 7

您可以使用

^(?!(?:[0-9]+| +)$).*$
Run Code Online (Sandbox Code Playgroud)

或者,支持任何空格

^(?!(?:[0-9]+|\s+)$).*$
Run Code Online (Sandbox Code Playgroud)

请参阅regex演示regex图

在此处输入图片说明

在Kotlin中使用

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

另外,您可以使用^(?:[0-9]+|\s+)$pattern并取反结果:

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

由于.matches()需要一个完整的字符串匹配,不需要^(?:)$上面的图案。