Java 如何确保正则表达式中的空格前后都有字母?

Java 如何确保正则表达式中的空格前后都有字母?,java,regex,Java,Regex,我正在尝试为一个字符串编写正则表达式,该字符串将作为一个人的名字。这些限制如下: 最多可包含1个符号(可以为无) 最多可包含1'符号(可以为无) 不能有两个相邻的空格 空格后必须加字母(A-z或A-z) 该字符串最多可包含20个字符 字符串必须以字母(a-z或a-z)开头 这是我到目前为止的表达方式: ^(?!.*[ ]{2})(?!(.*?-){2})(?!(.*?'){2})([a-zA-Z])([(?<=[a-zA-Z]) (?=[a-zA-Z])][a-zA-Z0-9\-']*

我正在尝试为一个字符串编写正则表达式,该字符串将作为一个人的名字。这些限制如下:

  • 最多可包含1个符号(可以为无)
  • 最多可包含1'符号(可以为无)
  • 不能有两个相邻的空格
  • 空格后必须加字母(A-z或A-z)
  • 该字符串最多可包含20个字符
  • 字符串必须以字母(a-z或a-z)开头
这是我到目前为止的表达方式:

^(?!.*[ ]{2})(?!(.*?-){2})(?!(.*?'){2})([a-zA-Z])([(?<=[a-zA-Z]) (?=[a-zA-Z])][a-zA-Z0-9\-']*){0,19}$

^(?。*[{2})(?!(.-){2})(?!(.*){2})([a-zA-Z])([(?对于这些特定要求,您可以使用:

^[a-zA-Z](?!.*(['-]).*\1)(?!.*  )(?=.{0,19}$)[a-zA-Z0-9'-]*(?: (?<=[a-zA-Z] )[a-zA-Z][a-zA-Z0-9'-]*)*$

(p

添加一个有效的阳性测试用例,并添加一个有效的阳性测试用例,并使用可能这样的使用。p>添加一个有效的阳性测试用例,并添加一个有效的测试用例,并使用可能这样的使用,可能是这样的<代码>^[a-a-zA-Z[a-a-zA-Z][a-zA-Z-Z][a-zA-Z-Z-Z-Z[a-Z-Z-Z-Z-Z[a-Z-Z-Z-Z-Z-Z-5 5 5 5-Z-Z-Z-5 5 5 5 5 5 5 5 5 5 5-5-5-5-5 5 5 5-5-5-5 5-5-5-5 5-5-5-5-5-5 5-5-5-5-5-5-5 5 5-5-5-5-5-5-5-5-5-5-5-5-5-5-5-5-5-5-5谢谢你!它有效:)我取出了这些数字,因为它们是不允许的(忘了提到这个规则),这是完美的。你也让我写的更好了,所以谢谢你!虽然这可以用正则表达式来完成,但为检查编写一些代码可能更清晰、更简单。
^[a-zA-Z](?!.*(['-]).*\1)(?!.*  )(?=.{0,19}$)[a-zA-Z'-]*(?: (?<=[a-zA-Z] )[a-zA-Z][a-zA-Z'-]*)*$