我有一个字符串数组,比如:
"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
标志(