【问题标题】:Adding exceptions to regular expressions (using android studio)向正则表达式添加异常(使用 android studio)
【发布时间】: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öäå]");?

标签: java android regex


【解决方案1】:

您不需要在正则表达式中使用 AND 运算符。

return s.matches("^[a-zA-Zöäåü]*$");

这应该可以解决问题。

【讨论】:

  • 正确,但不是所有现有变音符号的一般答案(例如,OP 提到的 ü 缺失)
  • @Markus 我认为预期的问题不是关于如何在正则表达式中包含所有现有的变音符号。用户发布了有关如何将 ö、ä、å 和 ü 等字符以及所有字母表包含在内的信息。所以,我只是指出了如何做到这一点。不过,我同意在表达式中不包括 ü。
  • 好的,所以用这个表达式 return s.matches("^[\\p{L}\\p{Nd}]*$");我得到所有字符,包括 ö 和 Ä 但不包括 å 和 ü
  • 您的要求对我来说不是很清楚。我建议你阅读this
  • 我的要求都是英文字母加ö、ä、ü(变音符号)
【解决方案2】:

请试试这个:"^([a-zA-Z]+|([öäå])+)[a-zA-Z]*$"

【讨论】:

  • 这与"^[a-zA-Zöäå]*$" 有什么区别,只是看起来更复杂?
  • 表示字母字符或特殊字符必须出现一次,,"^[a-zA-Zöäå]*$" 可以匹配空值。
  • 是的......但是你为什么不这样做:"^[a-zA-Zöäå]+$"
  • 是的!你写的更简洁。
【解决方案3】:

可以尝试类似^[a-zA-Zöäå]*$

【讨论】:

  • 这并没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
  • 他问他如何在正则表达式中指定它,我给了他一个正则表达式,这怎么不提供答案?
猜你喜欢
  • 2012-07-10
  • 2019-04-21
  • 1970-01-01
  • 2022-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多