-1

我需要匹配“/en”、“/ja”、“/zh-cn”

我写了这样的正则表达式

String str = "/en";
if(str.matches(".[(en)(ja)(zh\\-cn)]$"))
   System.out.println(str);

这不起作用。有人可以在这里帮忙吗

4

2 回答 2

3

使用以下(使用pattA|pattB你可以匹配pattA pattB):

"/(en|ja|zh-cn)"

或者如果你想匹配其他语言代码,请遵循:

"/[-a-z]+"

"/[a-z]{2}(-[a-z]{2})?"
于 2013-09-17T07:42:53.217 回答
2

您似乎不了解字符类的工作原理。您使用的字符类将匹配(or eor nor or )or jor aor zorh等​​任何一个字符。

你需要使用一个组来做你想做的事情:

str.matches("/(?:en|ja|zh-cn)$")

is 表示“|或”,我使用了非捕获组(?: ... )( ... )如果您打算稍后使用“en”、“ja”或“zh-cn”,请使用捕获组。

于 2013-09-17T07:45:24.817 回答