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

Check a word whether it has letter in the start and at the end

支持我有话要说。我必须检查它们是否有 "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 个字母。并且字母的数量可能会增加。

提前致谢。

如果要检查字符串的开头和结尾,则不应 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