Java模式:regexp -允许字符之间的一些特殊字符



我试图通过正则表达式允许一些字符。我想允许单词带有特殊字符,如(- _ &空格)在字符之间。我也允许数字和字母一起出现在一个单词里。

有效:

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]$

相关内容

  • 没有找到相关文章

最新更新