Java正则表达式在字符之前或之后匹配空格
我尝试使用正则表达式验证输入字段 这个问题是的延续,但我犯了一个错误,问题有点改变,所以我创建了一个新问题 这是我的java正则表达式:Java正则表达式在字符之前或之后匹配空格,java,regex,pattern-matching,whitespace,wildcard,Java,Regex,Pattern Matching,Whitespace,Wildcard,我尝试使用正则表达式验证输入字段 这个问题是的延续,但我犯了一个错误,问题有点改变,所以我创建了一个新问题 这是我的java正则表达式: ^(?:\?*[a-zA-Z\d]){2}[a-zA-Z\d?]*\*?$ 我想说的是: 最少2个字母数字字符(除“?”和“*”外) “*”只能在字符串末尾出现一次 “?”可以多次出现 开头没有空格 在“?”或“*”之前或之后没有空格 例如: abcd=正常 ?bcd=正常 ab???=嗯 ab*=正常 ab?*=正常 ??cd=正常 ab cd=正
^(?:\?*[a-zA-Z\d]){2}[a-zA-Z\d?]*\*?$
我想说的是:
- 最少2个字母数字字符(除“?”和“*”外)
- “*”只能在字符串末尾出现一次
- “?”可以多次出现
- 开头没有空格
- 在“?”或“*”之前或之后没有空格
- abcd=正常
- ?bcd=正常
- ab???=嗯
- ab*=正常
- ab?*=正常
- ??cd=正常
- ab cd=正常
- *ab=不正常
- a?b=不正常
- ??=不好
- ab?cd=不正常
- ab?d=不正常
- ab*=不正常
- abcd=不正常(开头有空格)
^(?!\s)(?!.*\s[*?])(?!.*[*?]\s)(?:[?\s]*[a-zA-Z0-9]){2}[a-zA-Z0-9?\s]*\*?$
看
用法说明:如果与Java的.matches()
方法一起使用,则可以从模式中删除^
和$
。记住在字符串文本中加倍转义反斜杠
详细信息
-字符串的开头^
-右边(字符串开头)不允许有空格(?!\s)
-在(?!.*\s[*?])
或*
之前的任何0+字符后,尽可能多的空格都不允许?
-在(?!.[*?]\s)
或*
之后,任何0+字符后都不允许有空格,空格的数量应尽可能多?
-两个(?:[?\s]*[a-zA-Z0-9]){2}
-0或更多[?\s]*
或/和空格?
-字母数字字符[a-zA-Z0-9]
-0个或更多字母、数字、[a-zA-Z0-9?\s]*
或空格?
-可选的\*?
字符?
-字符串的结尾$
ab
(中间有空格)可以吗?是的(a?b=ok)(ab cd=ok)(a bcd=ok)(a b=ok)一个或多个空格是可以的,但不是正好在“*”或“?”之前或之后,一开始也不是很感谢你!再好不过了!