Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为php组合两个正则表达式_Php_Regex - Fatal编程技术网

为php组合两个正则表达式

为php组合两个正则表达式,php,regex,Php,Regex,我有两个正则表达式 ^(((98)|(\+98)|(0098)|0)(9){1}[0-9]{9})+$ ^(9){1}[0-9]{9}+$ 如何将这些短语组合在一起 有效电话: just start with : 0098 , +98 , 98 , 09 and 9 sample : 00989151855454 +989151855454 989151855454 09151855454 9151855454 你没有提供什么通过什么不通过,但我认为如果我理解正确,这将起作用 /^\+?0

我有两个正则表达式

^(((98)|(\+98)|(0098)|0)(9){1}[0-9]{9})+$
^(9){1}[0-9]{9}+$
如何将这些短语组合在一起

有效电话:

just start with : 0098 , +98 , 98 , 09 and 9
sample :
00989151855454
+989151855454
989151855454
09151855454
9151855454


你没有提供什么通过什么不通过,但我认为如果我理解正确,这将起作用

/^\+?0{0,2}98?/
^匹配字符串的开头 \+? 匹配0或1加上反斜杠要转义的符号 0{0,2}匹配0字符的0和2之间的0、1和2 9与文本9匹配 8.匹配文字8个字符中的0或1个
看看你的第二个正则表达式,看起来你想让第一个正则表达式的第一部分98\+98 | 0098 | 0成为可选的。把它变成可选的?之后,它将允许第二个正则表达式允许的数字。改变这个,

^(((98)|(\+98)|(0098)|0)(9){1}[0-9]{9})+$
对,

我在正则表达式中又做了一些更正。使用{1}是多余的,因为这是一个字符的默认行为,不管有没有它。除非需要分组,否则不需要对regex进行不必要的分组。我已经去掉了最外面的括号和后面的+因为这是不需要的

这个正则表达式

^(?:98|\+98|0098|0)?9[0-9]{9}$
火柴

00989151855454
+989151855454
989151855454
09151855454
9151855454
演示:


但是请注意,您需要在国家/地区代码后的第一位数字为9或0

@Jan好的,我和我的答案基本相同+1.
00989151855454
+989151855454
989151855454
09151855454
9151855454