Java 数字和破折号的正则表达式
Java regular expression for digits and dashes
我需要一个正则表达式来匹配只有 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?
这样的字符串吗
试试这个正则表达式:
^(?=(?:[^-]*-){4}[^-]*$)(?=(?:\D*\d){13}\D*$).*$
解释:
^
- 断言行的开头
(?=(?:[^-]*-){4}[^-]*$)
- 正向前瞻以确保 -
在字符串 中仅出现 4 次
(?=(?:\D*\d){13}\D*$)
- 正向预测以确保字符串中出现 13 次数字
.*
- 一旦满足上述 2 个前瞻,匹配除换行符之外的任何字符的 0+ 次出现
$
- 断言行尾
在JAVA
中用另一个\
逃脱\
我需要一个正则表达式来匹配只有 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?
试试这个正则表达式:
^(?=(?:[^-]*-){4}[^-]*$)(?=(?:\D*\d){13}\D*$).*$
解释:
^
- 断言行的开头(?=(?:[^-]*-){4}[^-]*$)
- 正向前瞻以确保-
在字符串 中仅出现 4 次
(?=(?:\D*\d){13}\D*$)
- 正向预测以确保字符串中出现 13 次数字.*
- 一旦满足上述 2 个前瞻,匹配除换行符之外的任何字符的 0+ 次出现$
- 断言行尾
在JAVA
中用另一个\
逃脱\