用于验证用户 ID 的 Java 正则表达式。

德凯利

我的正则表达式有点生疏,我可以使用一些帮助。我正在编写一个正则表达式,用于验证 Java 应用程序的用户 ID。

id必须满足的两条规则:

  1. 必须以 -、_、0-9、az 或 AZ 开头。
  2. 不允许包含 %、反斜杠、+、/、#、::、单引号或双引号

我遇到问题的部分是双冒号。id 可以包含一个冒号,但不能包含一个背靠背。

这是我想出的,但似乎不起作用。

^[a-zA-Z0-9\-_]([^%\+\\\/\#'\"]|^(?!::))+$

任何建议都会很棒。

维克多·斯特里比尤夫

(?!::)是一个否定的前瞻,仅当字符串开头有两个冒号时匹配失败。

您可以(?!.*::)在匹配第一个字符后立即使用负前瞻:

String rx = "^[a-zA-Z0-9_-](?!.*::)[^%+\\\\/#'\"]+$";

使用 with 时matches(),您可以省略^$锚点。

查看正则表达式演示

细节

  • ^- 字符串开始(隐含在matches()
  • [a-zA-Z0-9_-]- 一个单词或-字符(因此,可以简化为[\w-]
  • (?!.*::)-::除了换行符之外的任何 0+ 字符之后都没有
  • [^%+\\\\/#'\"]+- 1以上字符以外%+\/#'"
  • $- 字符串结尾(隐含在matches()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章