【问题标题】:How to check if my string matches with regex - Swift 3 [duplicate]如何检查我的字符串是否与正则表达式匹配 - Swift 3 [重复]
【发布时间】:2017-08-01 19:27:17
【问题描述】:

我到处搜索,但它不符合我的要求。 如何检查字符串是否与正则表达式匹配? 我不想知道我的字符串是否包含字符或者它们是什么,但是我想做一个返回 true 或 false 的函数:这个字符串是否" abcdefgh" 与 "[a-z]" 匹配。

我可以在 PHP、JS 中做到这一点,但显然在 Swift 中所有人都只想知道哪些字符匹配。 ^^

问候,

【问题讨论】:

  • print("abcdefgh".range(of: "[a-z]", options: .regularExpression) != nil)
  • print("abcdef2gh".range(of: "[a-z]", options: .regularExpression) != nil) 返回 true,尽管它不应该
  • 为什么不应该?该字符串中有一个小写的 ASCII 字符。这是一个部分匹配。你需要一个完整的字符串匹配吗?那么你如何在 PHP 和 JS 中做到这一点呢? :) PHP 和 JS 都没有完整的字符串正则表达式匹配方法。顺便说一句,斯威夫特有一个。
  • 还有这个? ^^console.log(/^([a-z]*)$/.test('abcdefgh')) // true | console.log(/^([a-z]*)$/.test('abcd2efgh')) // false。测试自己。这就是我想在 Swift 中做的事情。你好吗 ? [[来源:stackoverflow.com/questions/6603015/…]]
  • 您正在使用锚点和量词。将它们与我的解决方案一起使用,您将获得相同的行为。 print("abcdefgh".range(of: "^[a-z]*$", options: .regularExpression) != nil)。 RegExp#test 只搜索部分匹配,正是 ^ 和 $ 使 JS 正则表达式引擎确保完整的字符串匹配。无论如何,你的问题是一个骗局。

标签: regex swift


【解决方案1】:

你不应该茫然地将想法从一种语言导入另一种语言:

let regex = try! NSRegularExpression(pattern: "[a-z]", options: [])
let str = "abcdefgh"

let isMatch = regex.firstMatch(in: "abcdefgh", options: [], range: NSMakeRange(0, str.utf16.count)) != nil

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 2021-12-18
    • 2011-08-12
    相关资源
    最近更新 更多