正则表达式允许使用字母表,只有一次选择特殊字符

时间:2014-03-20 18:32:29

标签: java regex

我需要名字字段的正则表达式。名称只能是字母。 name字段的其他要求是它可以包含 但是没有必要拥有这些字符中的任何一个:撇号(')或磅(#)或连字符( - ) 到目前为止我有这个

 [\\w]*[\'#-]?

这会检查特殊字符,但仅限于字符串的末尾。 例如

JohnO'Connell -> returns false -> should return true

JohnOConnell' -> returns true -> expected behavior
JohnOConnell# -> returns true -> expected behavior
JohnOConnell- -> returns true -> expected behavior
JohnOConnell-# -> returns false -> expected behavior

如何更新?

由于

2 个答案:

答案 0 :(得分:1)

你快到了:

^[a-zA-Z]+['#-]?[a-zA-Z]*$

只需在中间设置'#-是可选的。

答案 1 :(得分:0)

这个允许任何unicode信件:

^\pL+['#-]?\pL+$