我的正则表达式有点生疏,我可以使用一些帮助。我正在编写一个正则表达式,用于验证 Java 应用程序的用户 ID。
id必须满足的两条规则:
我遇到问题的部分是双冒号。id 可以包含一个冒号,但不能包含一个背靠背。
这是我想出的,但似乎不起作用。
^[a-zA-Z0-9\-_]([^%\+\\\/\#'\"]|^(?!::))+$
任何建议都会很棒。
这(?!::)
是一个否定的前瞻,仅当字符串开头有两个冒号时匹配失败。
您可以(?!.*::)
在匹配第一个字符后立即使用负前瞻:
String rx = "^[a-zA-Z0-9_-](?!.*::)[^%+\\\\/#'\"]+$";
使用 with 时matches()
,您可以省略^
和$
锚点。
查看正则表达式演示
细节
^
- 字符串开始(隐含在matches()
)[a-zA-Z0-9_-]
- 一个单词或-
字符(因此,可以简化为[\w-]
)(?!.*::)
-::
除了换行符之外的任何 0+ 字符之后都没有[^%+\\\\/#'\"]+
- 1以上字符以外%
,+
,\
,/
,#
,'
和"
$
- 字符串结尾(隐含在matches()
)本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句