查找以 Swift 中的特殊字符结尾的数字的正则表达式

Regular expression to find a number ends with special character in Swift

我有一个字符串数组,例如:

"Foo", "Foo1", "Foo$", "$Foo", "1Foo", "1$", "20$", "1$Foo", "12$$",  etc.

我要求的格式是 [Any number without dots][Must end with single $ symbol](我的意思是,上面数组中的 1$ 和 20$)

我试过下面的方法,但是不行。

func isValidItem(_ item: String) -> Bool {
   let pattern = #"^[0-9]$"#
   return (item.range(of: pattern, options: .regularExpression) != nil)
}

有人可以帮我解决这个问题吗?另外,请分享一些很棒的链接以了解正则表达式模式(如果有的话)。

谢谢

您可以使用

func isValidItem(_ item: String) -> Bool {
   let pattern = #"^[0-9]+$\z"#
   return (item.range(of: pattern, options: .regularExpression) != nil)
}

let arr = ["Foo", "Foo1", "Foo$", "$Foo", "1Foo", "1$", "20$", "1$Foo", "12$$"]

print(arr.filter {isValidItem([=10=])})
// => ["1$", "20$"]

这里,

  • ^ - 匹配行首
  • [0-9]+ - 一个或多个 ASCII 数字(请注意,Swift regex engine is ICU\d 匹配这种风格的任何 Unicode 数字,因此如果需要,[0-9] 更安全只匹配 0-9 范围内的数字)
  • $ - 一个 $ 字符
  • \z - 字符串的末尾。

参见 online regex demo(使用 $ 而不是 \z 因为演示是 运行 针对单个多行字符串,因此使用 m 标记在 regex101.com).