我有一个字符串,我想用正则表达式分开:
这里是字符串
D200001test_test_SMARTPHONE
第一部分用(D \ d {6})覆盖 问题是只需要这部分。如果它不存在,其他所有内容都是空的。
我需要将此字符串拆分为(在此示例中) D200001(customerId) test_test(shopId) 智能手机(布局)
最后一句话(如果存在)只能是SMARTPHONE或TABLET
但解决方案也应该使用以下字符串:
$testStrings = Array('D200001', 'D200001test', 'D200001test_test', 'D200001test_', 'D200001test_SMARTPHONE', 'D200001test_test_SMARTPHONE');
我想出了这个:
preg_match_all('/(D\d{6})([0-9a-z-_)]{0,})(_TABLET|_SMARTPHONE){0,1}/i', $string, $result);
没有正确解析布局WORDS ..
答案 0 :(得分:1)
以下内容应符合您的需求:
^(D\d{6})(.*?)(?:_(SMARTPHONE|TABLET))?$
第一组包含customerId,第二组包含shopId(如果有),第三组包含布局(如果有)。
答案 1 :(得分:1)
/^(D\d{6})([0-9a-z-_]*)(TABLET|SMARTPHONE)?$/i
问题是您的_TABLET | _SMARTPHONE组应该是可选的(使用?运算符)。这适用于给出的示例。
答案 2 :(得分:0)