Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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
Regex 为特定的字符分隔字符串创建正则表达式_Regex - Fatal编程技术网

Regex 为特定的字符分隔字符串创建正则表达式

Regex 为特定的字符分隔字符串创建正则表达式,regex,Regex,我正在为以下字符分隔字符串创建正则表达式: 12345678;12345678;12345678;... ^(?!00000000)\d{8}$ 因此,正如您所看到的,每个值必须有8位数字,并且不允许使用“00000000”(其他所有值都是允许的)。有人能帮我找到正确的正则表达式吗,因为我对它不太熟悉 单个值的正则表达式为(此正则表达式中的每个检查也必须应用于字符分隔字符串的正则表达式): 我只需要做这个“多值” 我能把正则表达式调整成“;”吗到底可以接受吗?类似于:“;?” 如果“0000

我正在为以下字符分隔字符串创建正则表达式:

12345678;12345678;12345678;...
^(?!00000000)\d{8}$
因此,正如您所看到的,每个值必须有8位数字,并且不允许使用“00000000”(其他所有值都是允许的)。有人能帮我找到正确的正则表达式吗,因为我对它不太熟悉

单个值的正则表达式为(此正则表达式中的每个检查也必须应用于字符分隔字符串的正则表达式):

我只需要做这个“多值”

我能把正则表达式调整成“;”吗到底可以接受吗?类似于:“;?”

如果“00000000”是有效输入,则单值情况下的regexp应为

^\d{8}$
例如,匹配包含8位数字的完整字符串

将此扩展到更多的组将是非常困难的

^\d{8}(;\d{8})*$
即,匹配一个完整的字符串,该字符串正好包含8位数字,后跟0组或多组逗号和另外8位数字

由于“00000000”无效,您只需应用
(?!00000000)
负前瞻来排除它

^(?!00000000)\d{8}(;(?!00000000)\d{8})*$
要允许字符串选择性地以分号结尾,请添加
在字符串锚点结束之前
$
。即:

^(?!00000000)\d{8}(;(?!00000000)\d{8})*;?$

你想用你的regexp做什么?另外,您是否有特定的原因不允许所有0数字?什么是“还必须接受单个值”?你是说一个8位数的数字,还是一个位数?好的。
(?!00000000)
将不允许在您提供regexp的单值情况下输入所有0for@Ken我的意思是它必须接受一个8位数的数字。所以,你还没有回答我最重要的问题。你想用这个regexp做什么?要检查字符串是否与指定的格式匹配,还是要从已知与此格式匹配的字符串中提取信息?很抱歉,我错了,00000000是不允许的,那么该如何调整正则表达式?@Taemyr:分隔符是
,不是逗号。除此之外,我的想法和你一样。@Chop谢谢。我确实检查了输入字符串,但显然我还是设法弄错了。@Ozkan您原始帖子中的否定前瞻仍然有效。答案已编辑。@Ozkan:您需要编辑您的问题并更新要求。当你这样做的时候要更清楚——你说过
00000000
是不允许的;那
00000001
呢?那10000000
呢?停下来,想想你的具体要求,然后编辑你的问题,把它们包括在内,清楚地说明。