我已经在Javascript中使用了正则表达式,现在我想将它们翻译成Java:
var nat_pattern2 = /^\d{8}$/;
var nat_pattern2 = /^\d{7}\-\d{1}$/;
var pct_pattern1 = /^\PCT\/?[A-Z]{2}?\d{4}\/\d{6}$/;
var ing pct_pattern2 = /^\PCT[A-Z]{2}\d{10}$/;
var pct_pattern3 = /^\P[A-Z]{2}\d{8}$/;
var its_pattern1 = /^\ITS\/?[A-Z]{2}?\d{2}\/\d{5}$/;
var its_pattern2 = /^\ITS[A-Z]{2}\d{7}$/;
var its_pattern3 = /^\I[A-Z]{2}\d{7}$/;
我的开头看起来像这样,但不正确:
Pattern pattern = Pattern.compile("/^\d{8}$/");
你能帮助我吗?
答案 0 :(得分:2)
在Java中,你的regexp周围不需要/
。 \d
要转义,以便成为定义正则表达式的字符串的一部分,因此它将成为\\d
。
Pattern pattern = Pattern.compile("^\\d{8}$");
斜杠没有特殊含义,因此也不需要进行转义。
Pattern natPattern1 = Pattern.compile("^\\d{8}$");
Pattern natPattern2 = Pattern.compile("^\\d{7}-\\d{1}$");
Pattern pctPattern1 = Pattern.compile("^PCT/?[A-Z]{2}?\\d{4}/\\d{6}$");
Pattern pctPattern2 = Pattern.compile("^PCT[A-Z]{2}\\d{10}$");
Pattern pctPattern3 = Pattern.compile("^P[A-Z]{2}\\d{8}$");
Pattern itsPattern1 = Pattern.compile("^ITS/?[A-Z]{2}?\\d{2}/\\d{5}$");
Pattern itsPattern2 = Pattern.compile("^ITS[A-Z]{2}\\d{7}$");
Pattern itsPattern3 = Pattern.compile("^I[A-Z]{2}\\d{7}$");
答案 1 :(得分:2)
将正则表达式从JS转换为JAVA的要点:
/
\
(例如\\.
而不是\.
)/
(即\/
变为/
)g
,i
)您现在可以在自己的;)
答案 2 :(得分:1)
\用于在Java-Strings中转义。所以你必须逃避。所以你的String看起来像这样:
Pattern pattern = Pattern.compile("^\\d{8}$");
如前所述,领先和结束/不需要。
请注意,如果你想匹配\你必须在你的正则表达式中逃避它。这意味着您可以在Java String中对其进行双重转义。 要匹配\你必须在Java中连接\\。