gpt4 book ai didi

java - 正则表达式:/w 是否表示 [a-zA-Z] 或 [a-zA-Z0-9_] 正如大多数教程提到的\w - 匹配单词字符?

转载 作者:行者123 更新时间:2023-12-02 08:38:11 26 4
gpt4 key购买 nike

我刚刚开始使用正则表达式,正在解决这个问题 question其中任务是检查该用户名是否有效。有效的用户名将具有以下属性:

  1. 用户名可以包含字母数字字符和/或下划线(_)。
  2. 用户名必须以字母字符开头。

  3. 8<=(用户名长度)<=30。

我正在使用this作为我的引用,上面写着

\w Matches the word characters.

我想出了一个像这样的解决方案 String pattern = "^\\w(\\d|\\w|_){7,29}$";这不是正确的解决方案。经过一段时间的搜索,我发现正确的解决方案是

String pattern = "^[a-zA-Z][a-zA-Z0-9_]{7,29}$";这很容易理解。

我要确认的是(\\w|\\d|_)相当于[a-zA-Z0-9_]或不?

我认为他们是因为 String pattern = "^[a-zA-z](\\w|\\d|_){7,29}$";所有测试用例都接受。

此外,这个 stackoverflow post \\w 有两个不同的等价表达式作为每个人都投一票的答案,想知道哪一个是正确的[A-Za-z\s][A-Za-z0-9_]

最佳答案

是的,根据此处找到的正则表达式构造的 Java 摘要:https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html ,

\d  A digit: [0-9]
\w A word character: [a-zA-Z_0-9]

因此 (\w|\d|_) 相当于 ([a-zA-Z_0-9]|[0-9]|_),其中额外的下划线和 \d 是多余的,因为它是作为 \w 的一部分包含在内的。

(\w|\d|_) 相当于 (\w)

关于java - 正则表达式:/w 是否表示 [a-zA-Z] 或 [a-zA-Z0-9_] 正如大多数教程提到的\w - 匹配单词字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39606576/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com