所以我正在查看具有不同分隔符的不同数字,并且我想查找具有相同分隔符的所有数字。
基本上,我想要以下
123+456+7890 // MATCH
123-456-7890 // MATCH
123.456.7890 // MATCH
123+456-7890 // FAILURE
我目前使用的正则表达式是
\d{3}[+-.]\d{3}[+-.]\d{4}
但是,它会匹配具有不同分隔符的数字序列。我不想在这样的事情上使用一个巨大的OR,因为现实生活相当于有更多的角色可以适合那里。
有没有办法在多个位置匹配相同的字符?
答案 0 :(得分:6)
您可以使用捕获的组和反向引用来确保再次使用相同的分隔符。
^\d{3}([+.-])\d{3}\1\d{4}$
([+.-])
这里我们捕获组#1中的分隔符\1
这里我们使用相同分隔符的反向引用答案 1 :(得分:4)
您可以使用这样的反向引用:
\d{3}([+.-])\d{3}\1\d{4}
[+-.]
的第一个运算符保留在捕获组中,以便稍后引用。\1
是对第一个捕获组的反向引用,在这种情况下为[+-.]
,因此它将确保运算符与前一个相同。您可以阅读有关反向引用的更多信息here