用于数字和短划线的Java正则表达式

时间:2018-02-27 15:45:27

标签: java regex digits

我需要一个正则表达式,它匹配只有4(4)个连字符和13个数字(0-9)的行。订单未定义。 我有正则表达式:

^([0-9\u2013-]{17})$

但是,当我收到字符串时

----123456789---- or 1-2-3-4-5-6-7-8-9 

匹配是真的,但对我来说一定是假的。

请您解释我需要使用的内容,以便匹配仅与123-345-565-45-67 or 123-1-34-5435-45- or ----1234567890123 etc?

等字符串匹配

1 个答案:

答案 0 :(得分:4)

试试这个正则表达式:

^

<强> Click for Demo

<强>解释

  • (?=(?:[^-]*-){4}[^-]*$) - 断言行的开头
  • - - 确保字符串中只出现(?=(?:\D*\d){13}\D*$)次出现的正面预测
  • .* - 确保字符串中出现13个数字的正面预测
  • $ - 一旦满足以上2个前瞻,匹配除换行符之外的任何字符的0次出现
  • \ - 断言行尾

在JAVA中使用其他\逃脱$('.container').on('submit', 'form', function(e) { e.preventDefault(); console.log(e.target.pick0.value); var input = e.target.pick0.cloneNode(true); document.getElementsByClassName('container')[0].appendChild(input); });