正则表达式用于查找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)
}

有人能帮我吗?此外,如果你有regex模式的话,请分享一些很棒的链接来学习。

谢谢

您可以使用

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($0)})
// => ["1$", "20$"]

这里,

  • ^-匹配一行的开头
  • [0-9]+-一个或多个ASCII数字(请注意,Swift正则表达式引擎是ICU,d与这种风格的任何Unicode数字匹配,因此如果只需要匹配0-9范围内的数字,[0-9]更安全(
  • $-一个$字符
  • z-字符串的最末端

请参阅在线regex演示(使用$而不是z,因为演示是针对单个多行字符串运行的,因此在regex101.com上使用了m标志(

最新更新