Java正则表达式单词边界

时间:2019-04-23 09:50:19

标签: java regex

我想创建正则表达式,它将匹配带有空格和破折号的第二个名称,例如:

Smith-Wright
Smith
Smith Wright

但是,如果您仅输入-或空格,则它不起作用。现在,我有一个像^[a-zA-Z\s\-]+$这样的正则表达式,但是它只监视带有-和空格的单词。如何创建仅与分隔符匹配单词的正则表达式?

2 个答案:

答案 0 :(得分:3)

您可以使用此正则表达式来表示要匹配的名称,

^[a-zA-Z]+(?:[ -][a-zA-Z]+)*$

说明:

  • ^-字符串的开头
  • [a-zA-Z]+-匹配由一个或多个字母组成的名称
  • (?:[ -][a-zA-Z]+)*-另外,如果空格或连字符之间有空格,则匹配更多名称部分。
  • $-字符串结尾

Regex Demo

答案 1 :(得分:1)

如果我正确理解了您的信息,那么您想匹配:

  • “史密斯·赖特”
  • “史密斯”
  • “史密斯·赖特”

但不是

  • “-”
  • ”“
  • “-赖特”
  • “赖特”

如果正确,则可以使用:

^[a-zA-Z]+([ -][a-zA-Z]+)*$

您可以将分隔符替换为[ -]