Nor*_*man 3 php regex string preg-match
我正在尝试匹配字母CDFHI E1 E2 CR(不区分大小写)并想出了这个.它只匹配一个字母,但不匹配E1 E2 CR.实际上它应该.这是正确的方法吗?
preg_match('/^([C]|[D]|[F]|[H]|[I]|[E1]|[E2]|[CR]?)$/','CR')
Run Code Online (Sandbox Code Playgroud)
[...]定义一个字符类,它告诉正则表达式引擎匹配类中的一个元素.因此,[E1]实际上意味着匹配E或1.由于您想匹配E1和E2,您可以将这些条件组合E[12](即E后跟1或2).此外,您可以通过将它们组合在一起来简化所有单个字母类.此外,如果在模式的末尾添加/i 修饰符,则会使其不区分大小写.
preg_match('/^([CDFHI]|E[12]|CR)?$/i', 'CR');
Run Code Online (Sandbox Code Playgroud)
请注意,?模式末尾的前一组是可选的.请注意,通过使模式的一部分可选(如您在问题中尝试的那样)或整个模式可选(就像我在我的解决方案中所做的那样),此模式将匹配一个空字符串.
考虑到您正在检查的相当有限且具体的代码集,我建议使用
in_array($inputvalue,array('C','D','F','H','I','E1','E2','CR'));
Run Code Online (Sandbox Code Playgroud)
而不是正则表达式 - 它比正则表达式运行得更快,并且更容易在下面进行修改和修改.
| 归档时间: |
|
| 查看次数: |
230 次 |
| 最近记录: |