Regex 不使用';不接受单个0,但接受10
我有一个正则表达式:Regex 不使用';不接受单个0,但接受10,regex,swift,Regex,Swift,我有一个正则表达式: ^[0-9A-Z][0-9]{4}[0-9][/][0-9A-Z]$ 这很好,但是现在我必须以这种方式排除构造[0-9]{4}[0-9]中的0 字符串A 0/A应该不匹配 字符串A 10/A应该匹配 因此,我必须检查第二组中第一次出现的数字是否为0 我该怎么做? 如果有什么或所有事情不清楚,就说出来 所以我必须检查第二组中第一次出现的数字是否为0 我认为你需要一个消极的前瞻: ^[ 0-9A-Z] (?! *0)[ 0-9]{4}[0-9][/ ][ 0-9A-Za-z]$
^[0-9A-Z][0-9]{4}[0-9][/][0-9A-Z]$
这很好,但是现在我必须以这种方式排除构造[0-9]{4}[0-9]
中的0
字符串A 0/A
应该不匹配
字符串A 10/A
应该匹配
因此,我必须检查第二组中第一次出现的数字是否为0
我该怎么做?
如果有什么或所有事情不清楚,就说出来
所以我必须检查第二组中第一次出现的数字是否为0
我认为你需要一个消极的前瞻:
^[ 0-9A-Z] (?! *0)[ 0-9]{4}[0-9][/ ][ 0-9A-Za-z]$
^^^^^^^
看
由于
[0-9]{4}[0-9]
匹配4个数字或空格(可能只有4个空格),并且[0-9]
强制匹配一个数字,(?!*0)
将确保上面的模式不会只匹配后面跟0
的空格,可能吧?可以公平地说,您的字符串长度每次都是相同的吗?这将是一个非常有用的简化假设。nice将检查这是否符合我的需要,非常抱歉,我在复制/粘贴时错过了:[a-z]
必须替换为[a-Za-z]
,否则您也将匹配[
,]
,^
,`
。此外,如果是为了验证,您最好在结尾使用\z
,而不是$
(在Swift中,让rx=“^[0-9A-z](?!*0)[0-9]{4}[0-9][/][0-9A-Za-z]\\z”
)。