如何检查字符串是否为字母数字?

How to check if a string is alphanumeric?

我可以使用 occursin 函数,但是它的 haystack 参数不能是正则表达式,这意味着我必须将整个字母数字字符串传递给它。在 Julia 中有没有一种巧妙的方法来做到这一点?

我不确定你关于 occursin 的假设是否正确:

julia> occursin(r"[a-zA-z]", "ABC123")
true

julia> occursin(r"[a-zA-z]", "123")
false

but its haystack argument cannot be a regular expression, which means I have to pass the entire alphanumeric string to it.

如果你指的是它的 needle 参数,它 可以 是一个正则表达式,例如:


julia> occursin(r"^[[:alnum:]]*$", "adf24asg24y")
true

julia> occursin(r"^[[:alnum:]]*$", "adf24asg2_4y")
false

这会使用 Unicode-aware 字符 class 检查给定的 haystack 字符串是否为字母数字 [[:alnum:]] 你可以认为等同于 [a-zA-Z\d],也扩展为 non-English 个字符。 (与 Unicode 一样,“完美”的解决方案涉及更多的工作和复杂性,但这需要您完成大部分工作。)

如果您的意思是希望 haystack 参数是一个正则表达式,则不清楚您为什么要在此处使用它,以及为什么“我必须将整个字母数字字符串传递给它”是一件坏事。

如前所述,您确实可以将正则表达式与 occursin 结合使用,而且效果很好。但您也可以推出自己的版本,非常简单:

isalphanumeric(c::AbstractChar) = isletter(c) || ('0' <= c <= '9')
isalphanumeric(str::AbstractString) = all(isalphanumeric, str)