我正在搜索这种格式的数字。
[0-9]{3,6}[\-\/]{1}[0-9]{1,3}[\-\/]{1}[0-9]{1,2}
有没有办法如何定义应该始终只有斜杠/或colom-?换句话说,第一个是 - 和第二个/应该被省略的选项。
答案 0 :(得分:1)
是的,您可以使用\1
反向引用。这与第一个匹配组匹配相同的字符(或组)。在这种情况下,([-\/])
是第一个匹配的组,\1
需要是相同的字符。
[0-9]{3,6}([-\/])[0-9]{1,3}\1[0-9]{1,2}
以下是一个示例:https://regex101.com/r/mKxnUN/1
答案 1 :(得分:0)
对此的一般解决方案是按原样保留基本正则表达式,但要提前了解以断言各种主要要求:
^(?!.*-.*/|.*/.*-)[0-9]{3,6}[\-\/]{1}[0-9]{1,3}[\-\/]{1}[0-9]{1,2}
(负面)向前看(?!.*-.*/|.*/.*-)
表示“在以下输入中,没有 - 然后是/,或 a /然后是 - 。
虽然你可以在没有前瞻的情况下做到这一点,但是通过向前看更容易理解, plus 你可以随着其他要求的增加添加尽可能多的这些。
答案 2 :(得分:0)
您还可以使用替换:
[0-9]{3,6}(-[0-9]{1,3}-|\/[0-9]{1,3}\/)[0-9]{1,2}
这是一个基本想法,但它确实有效。