【问题标题】:Regex matches always returns false正则表达式匹配总是返回 false
【发布时间】:2019-06-04 12:52:49
【问题描述】:

我正在尝试验证用户输入,以便字符串中唯一允许的字符是 A-Z、a-z、_、- 和空格。为此,我编写了以下代码:

val regex = Regex("[\\w\\s-]")
val flag = regex.matches("Hello Overlay")

但是flag 的值是假的,我不知道为什么。

【问题讨论】:

  • 你应该使用双反斜杠吗? regex101.com 可能是测试它的好地方
  • @rong 是的,你需要在 Java/Kotlin 中转义它们,除非你使用 Kotlin 字符串文字(由 """ 包围)

标签: android regex kotlin


【解决方案1】:

要匹配符合模式的整个字符串,请使用

val regex = Regex("[\\w\\s-]+")

或者,为了避免过度转义:

val regex = Regex("""[\w\s-]+""")

请参阅Kotlin demo。请注意,matches 需要完整的字符串匹配,但 [\w\s-] 只匹配单个字符。

val regex = Regex("""[\w\s-]+""")
val flag = regex.matches("Hello Overlay")
println(flag)  // => true

【讨论】:

  • 我希望整个字符串符合正则表达式而不是子字符串
  • @RishabhJain 我更新了答案,只包含相关的解决方案。
【解决方案2】:
val regex = Regex("""[\w\s-]+""")
val flag = regex.matches("Hello Overlay")
println(flag)  // => true

【讨论】:

    猜你喜欢
    • 2016-07-26
    • 1970-01-01
    • 2015-09-15
    • 2012-05-31
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多