【发布时间】:2015-08-12 09:24:02
【问题描述】:
我是正则表达式的新手 我正在做一个 java 项目,我正在尝试指定一个字符串,其中只包含字母字符以及一些特殊字符,例如 ö、ä、@987654324 @ 和 ü。
如何在正则表达式中指定所有这些?到目前为止,我有这个,但它不起作用:
return s.matches("^[a-zA-Z]*$ && [öäå]");
更新:
好的,所以用这个表达式 return s.matches("^[\\p{L}\\p{Nd}]*$"); 我得到所有字符,包括 ö 和 Ä 但不包括 å 和 ü
【问题讨论】:
-
试试这个:
return s.matches("^[a-zA-Zöäå]*$");。并阅读这篇文章中的以下答案:stackoverflow.com/questions/1611979/… I.e.这应该适合你:return s.matches("^[\p{L}\p{Nd}]*$"); -
那么那些大写的特殊字符呢?
-
如链接帖子中所述“使用 [^\p{L}\p{Nd}]+ - 这匹配所有既不是字母也不是(十进制)数字的(Unicode)字符。” - 只需删除你的场景的否定......如果你不想要它们,也许还有数字(删除这个:\p{Nd})......
-
试试
return s.matches("(?i)^[a-zöäå]");。 -
你有时间查看
s.matches("(?i)^[a-zöäå]");吗?或者作为替代方案,s.matches("(?ui)^[a-zöäå]");?