查找以 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).
我有一个字符串数组,例如:
"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).