检查单词的开头和结尾是否有字母

时间:2018-08-03 09:34:14

标签: php preg-match

Suppoch我有话要说。我必须检查他们是否在开始处有“ RX”,在结尾处是否有“ CD”。

例如 我有这个“ RX3!Pl6HxTCD”。

我尝试过的是波纹管

$subject = "RX3!Pl6HxTCD";
$pattern = '/^CD/';
preg_match($pattern, substr($subject,10), $matches, PREG_OFFSET_CAPTURE);
print_r($matches);

我得到的是

Array ( [0] => Array ( [0] => CD [1] => 0 ) ) 

我想检查单词的前2个字母和后2个字母。并且字母的数量可能会增加。

谢谢。

1 个答案:

答案 0 :(得分:1)

如果要同时检查字符串的开头和结尾,则不应substr字符串。

使用

if (preg_match('/^RX.*CD$/sD', $subject, $matches)) { 
    print_r($matches); 
}

请参见PHP demo

模式将匹配

  • ^-字符串的开头
  • RX-RX子字符串
  • .*-任意0个以上的字符,并且尽可能多
  • CD-CD子字符串
  • $-字符串的结尾。

由于使用s修饰符,.也将匹配换行符,并且对于D,如果CD后跟换行符LF,则将不匹配。在字符串的末尾。

但是,您也可以使用非正则表达式方法:

if (substr($subject, 0, 2) === 'RX' && substr($subject, -2) === 'CD') {
    echo "$subject\n";
}

请参见PHP demo