preg_match没有在最后两个字符上工作

时间:2016-05-13 13:44:32

标签: php regex

我得到了他的小代码

 <?php  
    if (preg_match("/Remanufactured|REMANUFACTURED/",$product_info['products_description'] ) 
|| preg_match("/N2|N3|W1|W2|A1|A2|A3|R4/",$product_info['manufacturers_code'])) {
    echo "Refurbished";
   } else  {         
  echo "New Boxed"; 
 }
?>      

如果$ product_info ['manufacturers_code'] ='2122586R4'或'MC-MCB43112U0C2 / 04/1',则上述代码有效。

我希望上面的代码仅匹配最后两个字符为“/ N2 | N3 | W1 | W2 | A1 | A2 | A3 | R4 /”

的位置

我试过“/ N2 $ | N3 $ | W1 $ | W2 $ | A1 $ | A2 $ | A3 $ | R4 $ /”并且它不起作用。

问候

伊尔凡

2 个答案:

答案 0 :(得分:1)

替换

/N2|N3|W1|W2|A1|A2|A3|R4/

使用

/^(.*)(N2|N3|W1|W2|A1|A2|A3|R4)$/

.*将匹配开头的任何字符串和结束时指定的两个字符串

答案 1 :(得分:1)

试试这个

preg_match('/(N2|N3|W1|W2|A1|A2|A3|R4)$/',$product_info['manufacturers_code'])

( ) - 将一系列模式元素分组到一个元素。

| - 分开其他可能性。

$ - 匹配行或字符串的结尾。

所以&#34; (a|b)&#34;意味着&#34; a or b&#34;。 &#34; (a|b)$&#34;意味着&#34; a or b&#34;在一行或一行的末尾。