【问题标题】:Regex to block only numbers or only spaces, but allow numbers and spaces as input正则表达式仅阻止数字或仅空格,但允许数字和空格作为输入
【发布时间】:2020-01-08 04:56:27
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 您知道.* 暗示的不仅是数字和空格,而且几乎所有其他内容都是允许的?

标签: java android regex kotlin regex-negation


【解决方案1】:

你可以使用

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

或者,支持任何空格

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

查看regex demoregex 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() 需要完整的字符串匹配,因此上述模式中不需要^(?:)$

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 2017-11-16
    • 2022-01-14
    • 1970-01-01
    相关资源
    最近更新 更多