如何使用Regex查找我是否在多个不同位置使用相同的字符?

Ste*_*ers 6 regex

所以我正在查看具有不同分隔符的不同数字,并且我想查找具有相同分隔符的所有数字.

基本上,我想要以下内容

123+456+7890 // MATCH
123-456-7890 // MATCH
123.456.7890 // MATCH
123+456-7890 // FAILURE
Run Code Online (Sandbox Code Playgroud)

我目前使用的正则表达式是

\d{3}[+-.]\d{3}[+-.]\d{4}
Run Code Online (Sandbox Code Playgroud)

但是,它会匹配具有不同分隔符的数字序列.我不想为这样的事情使用一个巨大的OR,因为现实生活相当于有更多的角色可以适合那里.

有没有办法在多个位置匹配相同的字符?

anu*_*ava 6

您可以使用捕获的组和反向引用来确保再次使用相同的分隔符.

^\d{3}([+.-])\d{3}\1\d{4}$
Run Code Online (Sandbox Code Playgroud)
  • ([+.-]) 这里我们捕获组#1中的分隔符
  • \1 这里我们使用相同分隔符的反向引用

RegEx演示


deg*_*ant 4

您可以使用像这样的反向引用:

\d{3}([+.-])\d{3}\1\d{4}
Run Code Online (Sandbox Code Playgroud)
  • 第一个匹配的运算符[+-.]保存在捕获组内,以便稍后引用。
  • \1是对第一个捕获组的反向引用,在本例中是[+-.]这样,它将确保运算符与前一个捕获组相同。

正则表达式 101 演示

您可以在此处阅读有关反向引用的更多信息