2016-09-29 73 views
2

我想检查是否所有由某个分度符分割的子串都是匹配模式。
这是我的模式[S][0-9]{7}[A-Z]{1,2}但它是一个元素的模式。有时候有人会在输入框中输入S1234567A, S0X00000B,我想检查是否所有元素都符合该模式。在这种情况下,我的正则表达式只会因为他找到匹配的字符串而表示没问题。
我无法访问源代码,因此我可以拆分它并检查每个元素。
有没有办法在正则表达式中做到这一点?正则表达式命令拆分和匹配

+0

注意'S0X00000B'实际上并不符合你的模式,我相信你想说'S0000000B' –

+0

我想'S0X​​00000B'原因应该失败,但我的正则表达式说,这是好的,因为另外一个是罚款:P –

+0

啊,那么好吧,我只是想提供一个正则表达式小提琴,展示了如何更新正则表达式*匹配* *正确*输入。 –

回答

2

使用附加* -quantified组锚定在开始和结束字符串整个表达式与^$

^S[0-9]{7}[A-Z]{1,2}(?:,\s*S[0-9]{7}[A-Z]{1,2})*$ 
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

regex demo

详细

  • ^ - 字符串的开始
  • S[0-9]{7}[A-Z]{1,2} - S,7位数字,两个或一个大写的ASCII字母
  • (?: - 在*量化组的开始:
    • , - 一个逗号(如果有的话)可以是逗号之前的空白,前添加\s*
    • \s* - 0+空格符号
    • S[0-9]{7}[A-Z]{1,2} - 见上文
  • )* - 该组的结尾处,*量词使得它匹配零个或多个
  • $ - 字符串结尾。
+1

工程就像一个魅力。谢谢 :) –