【发布时间】:2019-01-17 21:21:14
【问题描述】:
我尝试使用正则表达式验证输入字段。 我所说的“小丑”字符是“?”和 '*'。 这是我的 java 正则表达式:
"^$|[^\\*\\s]{2,}|[^\\*\\s]{2,}[\\*\\?]|[^\\*\\s]{2,}[\\?]{1,}[^\\s\\*]*[\\*]{0,1}"
我要匹配的是:
- 至少 2 个字母数字字符(“?”和“*”除外)
- “*”只能出现一次,并且位于字符串的末尾
- “?”可以出现多次
- 根本没有空格
例如:
- abcd = 好的
- ?bcd = 正常
- ab?? = 好的
- ab*= 正常
- ab?* = 正常
- ??cd = 正常
- *ab = 不正常
- ??? = 不行
- ab cd = 不正常
- abcd = 不正确(开头有空格)
我让正则表达式有点复杂,我迷路了,你能帮帮我吗?
【问题讨论】:
-
你可以使用网站来测试你的正则表达式,看看有什么问题,比如regexr.com
-
“a?b”呢?
-
a?b = 也可以
-
试试
^(?:\?*[a-zA-Z\d]){2}[^\s*]*\*?$。在此处查看现场演示regex101.com/r/XgqAej/1 -
旁注:那些“小丑”字符实际上被称为wildcards
标签: java regex metacharacters