我想检查一些分隔符分割的所有子字符串是否匹配模式
这是我的模式[S][0-9]{7}[A-Z]{1,2}
但它是一个元素的模式。有时会有人将S1234567A, S0X00000B
放在输入框中,我想检查所有元素是否与模式匹配。在这种情况下,我的正则表达式会说它没关系,因为他找到了匹配的字符串
我无法访问源代码,因此我可以拆分它并检查每个元素
有没有办法在正则表达式中执行此操作?
答案 0 :(得分:2)
使用额外的*
- 量化组,使用^
和$
将整个表达式锚定在字符串的开头和结尾处:
^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}
- 见上文)*
- 组的结尾,*
量词使其匹配零次或多次$
- 字符串结束。