正则表达式如何定义规则必须相同

时间:2017-09-13 21:41:32

标签: regex

我正在搜索这种格式的数字。

[0-9]{3,6}[\-\/]{1}[0-9]{1,3}[\-\/]{1}[0-9]{1,2}

有没有办法如何定义应该始终只有斜杠/或colom-?换句话说,第一个是 - 和第二个/应该被省略的选项。

3 个答案:

答案 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}

这是一个基本想法,但它确实有效。