正则表达式仅阻止数字或空格,但允许数字和空格作为输入
Regex to block only numbers or only spaces, but allow numbers and spaces as input
我在 Android 应用程序中使用正则表达式来验证用户输入。
我的业务需求是不允许用户只输入空格或数字,但应该允许输入空格和数字。
- " " -> 不允许。
- “83278”-> 不允许。
- " 35 46" -> 允许。
目前我正在使用正则表达式
^(?![0-9 ]+$).*$
上面的 reqex 对于要求 #1 和 #2 工作正常,但对于要求 #3 失败,因为它不允许用户同时输入空格和数字。
有人可以帮我改进我的请求以满足我的要求吗......
提前致谢!
您可以使用
^(?!(?:[0-9]+| +)$).*$
或者,支持任何空格
^(?!(?:[0-9]+|\s+)$).*$
参见 regex demo and the regex graph:
在 Kotlin 中,使用
" 1 2".matches(Regex("""(?!(?:[0-9]+|\s+)$).*""")) // true
此外,您可以使用 ^(?:[0-9]+|\s+)$
模式并对结果求反:
if (" ".matches(Regex("""[0-9]+|\s+"""))) {
println( "INVALID" )
} else {
println( "VALID" )
}
由于 .matches()
需要完整的字符串匹配,因此在上述模式中不需要 ^(?:
和 )$
。
我在 Android 应用程序中使用正则表达式来验证用户输入。
我的业务需求是不允许用户只输入空格或数字,但应该允许输入空格和数字。
- " " -> 不允许。
- “83278”-> 不允许。
- " 35 46" -> 允许。
目前我正在使用正则表达式
^(?![0-9 ]+$).*$
上面的 reqex 对于要求 #1 和 #2 工作正常,但对于要求 #3 失败,因为它不允许用户同时输入空格和数字。
有人可以帮我改进我的请求以满足我的要求吗......
提前致谢!
您可以使用
^(?!(?:[0-9]+| +)$).*$
或者,支持任何空格
^(?!(?:[0-9]+|\s+)$).*$
参见 regex demo and the regex graph:
在 Kotlin 中,使用
" 1 2".matches(Regex("""(?!(?:[0-9]+|\s+)$).*""")) // true
此外,您可以使用 ^(?:[0-9]+|\s+)$
模式并对结果求反:
if (" ".matches(Regex("""[0-9]+|\s+"""))) {
println( "INVALID" )
} else {
println( "VALID" )
}
由于 .matches()
需要完整的字符串匹配,因此在上述模式中不需要 ^(?:
和 )$
。