我试图通过正则表达式允许一些字符。我想允许单词带有特殊字符,如(- _ &空格)在字符之间。我也允许数字和字母一起出现在一个单词里。
有效:
a_B
a_b
a b
a B
a_btest_psom
a-B
a43 b
a43_c
无效:
a_
_a
a-
a_b_
a_B_
a_b-
a_btest_psom_ (at end only special character)
43 b (starting with number)
43_c (starting with number)
434343 (only numbers)
代码:
import javax.validation.constraints.Pattern;
public static final String PATTERN="^[a-zA-Z0-9 _-]*$";
@Pattern(regexp = PATTERN)
private String companyName;
使用上面的代码,我不能达到我的期望。你能帮我一下吗?
可以使用
^[a-zA-Z][a-zA-Z0-9]*(?:[ _-][a-zA-Z0-9]+)*$
查看regex演示
细节:
^
-字符串 起始[a-zA-Z][a-zA-Z0-9]*
-一个字母,然后是零个或多个字母或数字(?:[ _-][a-zA-Z0-9]+)*
- 0个或多个空格/_
/-
序列,然后是一个或多个字母或数字$
-字符串结束
请试试这个正则表达式。
^ [a-zA-Z] [A-Za-z0-9 ()/] * $
你可以在正则表达式中添加任何你想要的特殊字符。
只要在开始的[a-zA-Z]
和结束的[a-zA-Z0-9]
中添加这个就可以了。
^[a-zA-Z][a-zA-Z0-9 _-]*[a-zA-Z0-9]$
,这意味着第一个字符应该是字符,最后一个字符应该是字符或数字。
如果不需要以数字结尾,则使用此:^[a-zA-Z][a-zA-Z0-9 _-]*[a-zA-Z]$
。