我需要匹配“/en”、“/ja”、“/zh-cn”
我写了这样的正则表达式
String str = "/en";
if(str.matches(".[(en)(ja)(zh\\-cn)]$"))
System.out.println(str);
这不起作用。有人可以在这里帮忙吗
使用以下(使用pattA|pattB
你可以匹配pattA
或 pattB
):
"/(en|ja|zh-cn)"
或者如果你想匹配其他语言代码,请遵循:
"/[-a-z]+"
"/[a-z]{2}(-[a-z]{2})?"
您似乎不了解字符类的工作原理。您使用的字符类将匹配(
or e
or n
or or )
or j
or a
or z
orh
等任何一个字符。
你需要使用一个组来做你想做的事情:
str.matches("/(?:en|ja|zh-cn)$")
is 表示“|
或”,我使用了非捕获组(?: ... )
。( ... )
如果您打算稍后使用“en”、“ja”或“zh-cn”,请使用捕获组。