【问题标题】:Check string matches exact format swift 5检查字符串是否匹配精确格式 swift 5
【发布时间】:2021-12-02 18:27:28
【问题描述】:

我想检查一个字符串是否与一个精确的正则表达式匹配;

目前,即使被比较的字符串不是完全匹配,我的函数也会返回 true。

模式字符串:"([0-9],[0-9])"

例如,

(1,1) 有效

(5,4) 有效

只有以这种格式输入的字符串才是有效的 I.E.括号数字逗号数字括号(不带空格)

I.E.

[5,5] 无效

{5,5] 无效

5,5 无效

我用来检查的代码:

let stringToCheck = "[5,5]"

return stringToCheck.range(of: "([0-9],[0-9])", options: .regularExpression, range: nil, locale: nil) != nil

谁能帮我调整一下以检查是否与我的模式完全匹配?

谢谢!

【问题讨论】:

  • 看起来工作得很好@WiktorStribiżew

标签: swift regex string


【解决方案1】:

你需要两件事:

  • 转义括号
  • 添加锚点,因为在当前代码中,正则表达式可以匹配字符串的一部分。

你可以这样使用

stringToCheck.range(of: #"^\([0-9],[0-9]\)\z"#, options: .regularExpression, range: nil, locale: nil) != nil

注意两端的# 字符,它们允许使用单个反斜杠进行转义。

详情

  • ^ - 字符串开头
  • \( - 一个 ( 字符
  • [0-9] - 单个 ASCII 数字(在 ] 之后添加 + 以匹配一个或多个数字)
  • , - 逗号
  • [0-9] - 单个 ASCII 数字(在 ] 之后添加 + 以匹配一个或多个数字)
  • \) - 一个 ) 字符
  • \z - 字符串的最后(如果字符串中不能出现换行符,$ 就足够了)。

【讨论】:

    猜你喜欢
    • 2012-09-17
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    相关资源
    最近更新 更多