带有转义圆括号的正则表达式

时间:2020-12-13 21:44:40

I am trying to write the expression that will accept the following phone numbers format:

我正在写一个可以接受以下电话号码格式的表达式:

508 736 756
505050505
+48 505 505 505
(+48) 505 505 505
++48 505 505 505
(++48) 505 505 505
(23)692 36 99
23 692 36 99

I wrote the following expression

我写下了下面的表达式

^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$

However, this expression only covers the formats listed below:

但是,此表达式仅包含以下格式:

508 736 756
505050505
+48 505 505 505
++48 505 505 505
23 692 36 99

I have an issue with the escaping of the parenthesis characters: (). That's why I can't cover the following formats:

我有一个关于转义字符的转义问题:()。这就是为什么我不能涵盖以下格式:

(+48) 505 505 505
(++48) 505 505 505
(23)692 36 99

I tried escaping them with a backslash but it wouldn't work for some reason.

我试着用反斜线逃离他们,但由于某种原因,它不能工作。

...[(]?[+]{0,2}[)]?...

…[(]?[+]{ 0,2 }[)]?…

DEMO: https://regex101.com/r/hY5tG4/2

演示:https://regex101.com/r/hY5tG4/2

1 个解决方案

#1


3  

You can use following regex :

您可以使用以下regex:

^((\(\+{0,2}[0-9]{1,2}\)|\+{0,2}[0-9]{0,2})?([0-9 ]+)?)$

Demo

演示

Note that you omitted the numbers within parenthesis.Also about the parenthesis and the numbers between them you can not make the brackets optional because the comes together and if you make them optional the regex engine will match some phone numbers like (23692 36 99.

注意你省略了括号内的数字。关于括号和括号之间的数字,您不能将括号设置为可选的,因为括号在一起,如果将括号设置为可选的,则regex引擎将匹配一些电话号码(23692 36 99)。

And note this regex will match numbers like (2) 692 36 99 if the length of numbers within brackets must be 2 you can change the renge in regex.

注意,这个regex将匹配数字(2)692 36 99,如果括号内的数字长度必须为2,您可以在regex中更改renge。

#1


3  

You can use following regex :

您可以使用以下regex:

^((\(\+{0,2}[0-9]{1,2}\)|\+{0,2}[0-9]{0,2})?([0-9 ]+)?)$

Demo

演示

Note that you omitted the numbers within parenthesis.Also about the parenthesis and the numbers between them you can not make the brackets optional because the comes together and if you make them optional the regex engine will match some phone numbers like (23692 36 99.

注意你省略了括号内的数字。关于括号和括号之间的数字,您不能将括号设置为可选的,因为括号在一起,如果将括号设置为可选的,则regex引擎将匹配一些电话号码(23692 36 99)。

And note this regex will match numbers like (2) 692 36 99 if the length of numbers within brackets must be 2 you can change the renge in regex.

注意,这个regex将匹配数字(2)692 36 99,如果括号内的数字长度必须为2,您可以在regex中更改renge。